我正在尝试实现一个总是加载新图像的图库,无论用户是向左还是向右滑动。我所做的是告诉我的PagerAdapter.instantiateItem(v,position)
在mPosition++
加载图片,其中mPosition
初始化为0.请注意,我没有使用附带的position
。
public class ViewPagerAdapter extends PagerAdapter {
private Context mContext;
private ImageFactory mImageFactory;
private int mPosition;
public ViewPagerAdapter(Context c) {
mContext = c;
mImageFactory = ImageFactory.instance();
mPosition = 0;
}
@Override
public int getCount() {
return mImageFactory.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((FrameLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.viewpager_item, container,
false);
// Locate the ImageView in viewpager_item.xml
ImageView imgflag = (ImageView) itemView.findViewById(R.id.flag);
// Load Bitmap to ImageView
mImageFactory.loadImage(imgflag, mPosition++);
// Add viewpager_item.xml to ViewPager
((ViewPager) container).addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// Remove viewpager_item.xml from ViewPager
((ViewPager) container).removeView((FrameLayout) object);
}
}
然而,这不起作用,我猜这是因为ViewPager
缓存页面。
所以我不知道我的假设是对还是错,但我很感激你的建议。
谢谢!
答案 0 :(得分:0)
PagerAdapter有以下方法可以覆盖:
setPrimaryItem 正如文档所述:“调用以通知适配器当前认为哪个项目是”主要“,即向用户显示当前页面。”
因此可以用作更新图像的钩子。如果您需要更新屏幕外的页面,则需要保留对已实例化视图的引用(注意不要泄漏视图)。
另外,请看看Jake Wharton RecyclingPagerAdapter。它摇滚!