<span style="color: rgb(50, 62, 50); font-family: Arial; font-size: 14px; line-height: 26px;">查了很多资料,发现要做到ViewPager刷新数据,动态更改adapter的数量那种效果只要实现这个方法就可以了:</span>
<span style="color: rgb(50, 62, 50); font-family: Arial; font-size: 14px; line-height: 26px;"></span><pre name="code" class="java">@Override public int getItemPosition(Object object) { // TODO Auto-generated method stub return PagerAdapter.POSITION_NONE; }
注意getItemPostion要返回POSTION_NONE时,viewpager会以为没有检测到item的存在从而刷新。但是这种方法不适合数据量比较大的。
我这里用的是Fragment装在到ViewPager中,即使我使用了这个方法,依然达不到效果。
但是每次
destroyItem掉view时,将view置空就可以了、
public class PageAdapter extends PagerAdapter {
private Context mContext;
private ArrayList<ImageView> mlist;
private ArrayList<ImgListBean.ImgsBean> mImage;
public PageAdapter(Context mContext, ArrayList<ImageView> mlist,ArrayList<ImgListBean.ImgsBean> mImage) {
this.mContext = mContext;
this.mlist = mlist;
this.mImage = mImage;
}
@Override
public int getCount() {
return mlist.size();
}
/**
* 从指定的position创建page
*
* @param position The page position to be instantiated.
* @return 返回指定position的page,这里不需要是一个view,也可以是其他的视图容器.
*/
@Override
public Object instantiateItem(View collection, final int position) {
ImageView child = mlist.get(position);
child.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String fileType = mImage.get(position).getFileType();
if (TextUtils.equals("3",fileType)) {
Intent intent = new Intent(mContext, VideoActivity.class);
intent.putExtra("video", mImage.get(position).getFullPictureUrl());
mContext.startActivity(intent);
}
}
});
((ViewPager) collection).addView(child, 0);
return child;
}
// @Override
// public void destroyItem(View collection, int position, Object view) {
// ((ViewPager) collection).removeView(mlist.get(position));
// }
@Override public void destroyItem(View collection, int position, Object o) {
// 动态removeView很重要,是否能够删除数据就靠这句,否则会导致无法刷新视图
View view = (View)o; ((ViewPager) collection).removeView(view); view = null; } @Override public boolean isViewFromObject(View view, Object object) { return view==(object); }
// 强制动态更新Item
@Override public int getItemPosition(Object object) { // TODO Auto-generated method stub return PagerAdapter.POSITION_NONE; }}