Android将自定义适配器设置为viewPager

Posted

技术标签:

【中文标题】Android将自定义适配器设置为viewPager【英文标题】:Android setting Custom Adapter to viewPager 【发布时间】:2015-03-05 13:22:31 【问题描述】:

我创建了一个扩展 ArrayAdapter 的自定义适配器。我想将它包含在视图寻呼机中并在 xml 布局中显示其他内容(标题等)。

所以现在我可以在没有 viewPager 的情况下使用 onCreate 方法中的以下代码使其工作:

AppAdapter adapter = new AppAdapter(this,appinfo);
setListAdapter(adapter);

但是当我尝试以下操作时出现错误:

viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(adapter); //says custom adapter can't be applied, should be normal adapter

xml部分

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:auto="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:orientation="horizontal"
android:background="#EEEEEE"
android:padding="5dip"
android:id="@+id/lay">

<android.support.v4.view.ViewPager        xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_
    android:layout_>
</android.support.v4.view.ViewPager>

我很确定有一个简单的解决方法,而无需创建自定义适配器。请从这里告诉我您的意见

【问题讨论】:

如果您将适配器设置为ViewPager,那么它应该扩展为PagerAdapterFragmentPagerAdapter 【参考方案1】:

ViewPager 使用的PagerAdapterAdapterView 的子类使用的Adapter 完全不同(其中包括ListViewSpinnerGridview,...但不是@ 987654332@).

提供的唯一实现是FragmentPagerAdapterFragmentStatePagerAdapter。您可以自己编写,但它比 普通 适配器要复杂一些。

顺便说一下,这些适配器中的每一个都有 2 个版本,一个在 v13 兼容库中(用于原生片段):

https://developer.android.com/reference/android/support/v13/app/FragmentStatePagerAdapter.html https://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html

v4 兼容库中的一个(用于兼容片段):

https://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html https://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html

【讨论】:

以上是关于Android将自定义适配器设置为viewPager的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 将自定义适配器添加到 AsyncTask

Android 中ViewPager练习

将ViewPager设置为全屏滚动动画

Android:从 viewPager 中的 Fragment 为 ListView 的适配器调用 getview()

android将自定义字体设置为油漆

Android - V之ViewPager的使用