Alex Rivera | Logout

Android PagerAdapter not calling instantiateItem

Asked 2012-05-04T20:12:01.187
11

I'm trying to implement ViewPager with PagerAdapter in my app. I'm mainly working off this example.

My PagerAdapter is called DataPagerAdapter and uses the following constructor and instantiateItem, where I inflate a view from 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 ) {}
}

And in my activity I get my adapter:

DataPagerAdapter adapter = new DataPagerAdapter( this );

And then later I want to refer to my dataListView in code:

dataListV
Edit
Report

1 Answer

24

Note, that your adapter uses deprecated methods:

public Object instantiateItem(View container, int position)
public void destroyItem(View container, int position, Object object)

The API says to use these instead:

public Object instantiateItem(ViewGroup container, int position)
public void destroyItem(ViewGroup container, int position, Object object)
answered 2012-05-10T18:39:51.987

Your Answer