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

时间:2015-03-05 13:22:32

标签: android view adapter pager

我创建了一个扩展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 part

<?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_width="wrap_content"
android:layout_height="wrap_content"
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_width="match_parent"
    android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

我非常确定这是一个简单的解决方法,而不是创建自定义适配器。请从这里告诉我你的意见

1 个答案:

答案 0 :(得分:0)

PagerAdapter使用的ViewPagerAdapter的子类使用的AdapterView完全不同(包括ListViewSpinnerGridview,...但不是ViewPager)。

提供的唯一实施是FragmentPagerAdapterFragmentStatePagerAdapter。你可以编写自己的,但它比普通的适配器更复杂。

顺便说一下,这些适配器中的每一个都有两个版本,一个在v13 compat lib中(对于本机片段):

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

和v4 compat lib中的一个(对于compat片段):

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