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
,那么它应该扩展为PagerAdapter
或FragmentPagerAdapter
。
【参考方案1】:
ViewPager
使用的PagerAdapter
与AdapterView
的子类使用的Adapter
完全不同(其中包括ListView
、Spinner
、Gridview
,...但不是@ 987654332@).
提供的唯一实现是FragmentPagerAdapter
和FragmentStatePagerAdapter
。您可以自己编写,但它比 普通 适配器要复杂一些。
顺便说一下,这些适配器中的每一个都有 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