Android PagerAdapter не вызывает InstantiateItem

Я пытаюсь реализовать ViewPager с PagerAdapter в своем приложении. В основном я работаю над этим примером.

Мой PagerAdapterназывается DataPagerAdapter и использует следующий конструктор и instanceItem, где я расширяю представление из 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 ) {}
}

И в моем Activity Я получаю свой адаптер:

DataPagerAdapter adapter = new DataPagerAdapter( this );

А затем позже я хочу сослаться на свой dataListView в коде:

dataListView = (ListView) findViewById(R.id.listViewData);

Проблема в том, что dataListViewвозвращается как null вызовом findViewByIdтак как instanceItemникогда не обрабатывается.

Когда вызывается instanceItemи делается ли это автоматически (как следует из примера) или мне нужно как-то заставить это делать?

11
задан mraviator 5 May 2012 в 12:54
поделиться