2
我有一個要求,顯示一個ViewPager最初只顯示一個視圖。 一旦此視圖通過度量&佈局傳遞,根據這些我可能需要更改適配器的內容的結果。 雖然這樣做,但我遇到過一種情況,即ViewPager在試圖從某個位置滑動到下一個項目時不會跟隨它的移動。
我相信我在我的適配器實現中做錯了事,但我無法指出我的手指在這個問題上。從instantiateItem()調用notifyDataSetChanged()
爲了演示的目的,我創建了一個虛擬適配器,它將模仿我實際項目中發生的事情。 爲了重現問題,試着一直滑動到位置2(第三項),結果是你無法通過位置1(第二項)。
謝謝!
public class CustomAdapter extends PagerAdapter {
int pages = 0;
@Override
public int getCount() {
return pages;
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view == o;
}
public void setPages(int x) {
this.pages = x;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
TextView tv = new TextView(MainActivity.this);
ViewGroup.LayoutParams lp =
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setText("Position: " + position);
if (position == 0 && pages == 1) {
setPages(2);
notifyDataSetChanged();
}
if (position == 1 && pages == 2) {
setPages(3);
notifyDataSetChanged();
}
container.addView(tv);
return tv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
活動(的onCreate左右):
CustomAdapter adapter = new CustomAdapter();
adapter.setPages(1);
vp.setAdapter(adapter);
adapter.notifyDataSetChanged();
instantiateItem方法不能再次調用如何解決此問題? –