10
私のアプリケーションにPagerAdapterでViewPagerを実装しようとしています。私は主にthis exampleを働いています。Android PagerAdapterがinstantiateItemを呼び出さない
マイPagerAdapter
がDataPagerAdapterと呼ばれ、私はdata_list_view.xml
からビューを膨らま次のコンストラクタとinstantiateItem
を、使用している:
public class DataPagerAdapter extends PagerAdapter
implements TitleProvider {
private LayoutInflater mInflater;
private static String[] titles = new String[]
{
"Page 1",
"Page 2",
"Page 3"
};
private final Context context;
public DataPagerAdapter(Context context)
{
this.context = context;
}
@Override
public String getTitle(int position)
{
return titles[ position ];
}
@Override
public int getCount()
{
return titles.length;
}
@Override
public Object instantiateItem(View pager, int position)
{
ListView v = (ListView) mInflater.inflate(R.layout.data_list_view, null);
((ViewPager)pager).addView(v, 0);
return v;
}
@Override
public void destroyItem(View pager, int position, Object view)
{
((ViewPager)pager).removeView((ListView)view);
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return view.equals(object);
}
@Override
public void finishUpdate(View view) {}
@Override
public void restoreState(Parcelable p, ClassLoader c) {}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View view) {}
}
そして、私の活動に、私は私のアダプターを取得します:
DataPagerAdapter adapter = new DataPagerAdapter(this);
そして、後でコード内のdataListViewを参照したいと思います。
dataListView = (ListView) findViewById(R.id.listViewData);
instantiateItem
は決して処理されないので、dataListView
はfindViewById
コールによってヌルとして返されます。
instantiateItem
が呼び出され、これは自動的に行われます(例として示唆しているように)、または何とか強制する必要がありますか?お使いのアダプタは非推奨メソッドを使用していることを
あなたはPagerAdapter中のメソッドをすべて記入されていることを確認する必要があります、getCount()、isViewFromObject()などのように、あなたの質問にもう少しコードを追加できますか? – dagalpin
DataPagerAdapterの完全なコードを追加しました。私は基本的に、この例で使用したコードを、私が提供したリンクから微調整しました。 – mraviator