Адаптер Viewpager не использует вид должным образом
Я должен был сделать следующий код, но представления, которые за кадром, кажется, не были переработаны должным образом.
Предположим, у меня есть все 60 представлений, которые позволяют ViewPager отображать, он отображается правильно, но он не использует повторно представления, пока я проведу пальцем по хвосту ArrayList, представления в предыдущем все еще не перезапускаются (я полагаю, из-за того, что крайний правый, затем снова проведите влево, никаких признаков перезагрузки)
Я искал много статей, но все так же, как я сделал ниже, не уверен, в чем смысл. (вот что я на самом деле сделал)
public class MyPagerAdapter extends PagerAdapter{
ArrayList<View> viewList = new ArrayList<View>();
public MyPagerAdapter(ArrayList<View> list) {
this.viewList = list;
}
@Override
public int getCount() {
return viewList.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = viewList.get(position);
container.addView(view);
return view;
}
public void destroyItem(ViewGroup container, int position, Object view) {
container.removeView((View)view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == (View)object;
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {
}
}
1 ответ
Есть два адаптера, т.е. PagerAdapter & FragmentStatePagerAdapter
,
PagerAdapter сохраняет страницы / просмотры в стеке и используется там, где общее количество используемых страниц меньше. С другой стороны, если количество страниц / представлений больше, чем рекомендуется, рекомендуется использовать FragmentStatePagerAdapter, поскольку он не сохраняет сохраненные представления / страницы в стеке, а создает их во время выполнения. FragmentStatePagerAdapter Перерабатывает ваши просмотры / страницы.
Я рекомендую использовать FragmentStatePagerAdapter.