私は非常に単純な PagerAdapter を持っています。何らかの理由で、位置 2 にスクロールすると位置 0 と 1 のビューが削除されます。
具体的には、最初にアプリを実行すると、3 つのビューが表示されます。位置 2 までスクロールすると、位置 1 のビューが消えます。ビュー 0 はまだあります。ビュー 0 にスクロールしてビュー 2 に戻り、再びビュー 0 に戻ると、ビュー 0 が突然消えます。もう一度同じことをすると、実際にビュー 0 がインスタンス化され、すぐに破棄されることがわかります。
ここで何が起こっているのですか?
主な活動
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MyPagerAdapter adapter = new MyPagerAdapter(this);
final ViewPager myPager = (ViewPager) findViewById(R.id.mypanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(1);
}
public class MyPagerAdapter extends PagerAdapter {
private Context ctx;
Calendar c = Calendar.getInstance();
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
ViewGroup collection;
public MyPagerAdapter (Context ctx){
this.ctx = ctx ;
}
@Override
public int getCount() {
return 3;
}
public Object instantiateItem(ViewGroup container, int position ){
this.collection = (ViewPager)container;
NewMonth monthObject = new NewMonth(ctx, month+position-1,2012);
View monthLayout = monthObject.newParentLayout;
collection.addView(monthLayout);
return monthLayout;
return addViewAt(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
collection.removeViewAt(position);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public boolean isViewFromObject(View view, Object arg1) {
return view==arg1;
}
}