Tôi đang cố triển khai ViewPager với PagerAdapter trong ứng dụng của mình. Tôi chủ yếu làm việc với số this example.Android PagerAdapter không gọi instantiateItem
My PagerAdapter
được gọi DataPagerAdapter và sử dụng các nhà xây dựng sau và instantiateItem
, nơi tôi thổi phồng một cái nhìn từ 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) {}
}
Và trong hoạt động của tôi, tôi có được adapter của tôi:
DataPagerAdapter adapter = new DataPagerAdapter(this);
Và sau đó sau đó tôi muốn tham chiếu đến dataListView của tôi trong mã:
dataListView = (ListView) findViewById(R.id.listViewData);
Sự cố là, dataListView
được trả lại bằng không bằng cuộc gọi findViewById
vì số instantiateItem
không bao giờ được xử lý.
Khi nào là instantiateItem
được gọi và được thực hiện tự động (ví dụ như ví dụ này có gợi ý) hay tôi phải ép buộc bằng cách nào đó?
Bạn cần phải chắc chắn rằng bạn đang điền vào tất cả các phương pháp trong PagerAdapter , chẳng hạn như getCount(), isViewFromObject(), v.v. Bạn có thể thêm mã nhiều hơn một chút vào câu hỏi của mình không? – dagalpin
Tôi đã thêm mã đầy đủ của DataPagerAdapter. Về cơ bản tôi đã chỉnh sửa mã được sử dụng trong ví dụ từ liên kết mà tôi đã cung cấp. – mraviator