我已经执行了以下代码,但是屏幕外的视图似乎没有被适当地回收。
假设我有所有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) {
}
}
最佳答案
有两个适配器,即PagerAdapter & FragmentStatePagerAdapter
。
PagerAdapter将页面/视图保存在堆栈中,并用于总页数较少的位置。
另一方面,如果页面/视图的数量更多,则建议使用FragmentStatePagerAdapter,因为它不会将保存的视图/页面保存在堆栈中,而是在运行时创建它们。 FragmentStatePagerAdapter回收您的视图/页面。
我建议使用FragmentStatePagerAdapter。
关于android - Viewpager适配器不能适本地重用 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19150341/