アプリに PagerAdapter を使用して ViewPager を実装しようとしています。私は主にこの例に取り組んでいます。
MyPagerAdapter
は DataPagerAdapter と呼ばれ、次のコンストラクターと を使用しますinstantiateItem
。ここで、 からビューを膨らませますdata_list_view.xml
。
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);
問題は、が処理されないため、呼び出しdataListView
によって null として返されることです。findViewById
instantiateItem
いつinstantiateItem
呼び出され、これは自動的に行われますか(例が示唆しているように)、または何らかの形で強制する必要がありますか?