ビュー ページャーからページを動的に追加または削除したいのですが、それは可能ですか?
ベストアンサー1
はい。ViewPager にビューを提供している PagerAdapter にビューを動的に追加または削除し、notifyDataSetChanged()
PagerAdapter から を呼び出して、影響を受ける ViewPager に変更を通知することができます。ただし、これを行う場合は、getItemPosition(Object)
現在表示されているアイテムの位置が変更されたかどうかを通知する PagerAdapter の をオーバーライドする必要があります。デフォルトでは、この関数は に設定されているためPOSITION_UNCHANGED
、このメソッドをオーバーライドしないと ViewPager はすぐに更新されません。たとえば、
public class mAdapter extends PagerAdapter {
List<View> mList;
public void addView(View view, int index) {
mList.add(index, view);
notifyDataSetChanged();
}
public void removeView(int index) {
mList.remove(index);
notifyDataSetChanged();
}
@Override
public int getItemPosition(Object object)) {
if (mList.contains(object) {
return mList.indexOf(object);
} else {
return POSITION_NONE;
}
}
}
ただし、PagerAdapter のデータセットからではなく、単にビューを一時的に表示に追加または削除したい場合は、PagerAdaptersetPrimaryItem(ViewGroup, int, Object)
のデータ内の特定のビューに移動したり、destroyItem(ViewGroup, int, Object)
表示からビューを削除したりするために を使用してみてください。