class MyViewAdapter extends PagerAdapter {
private int Tag = 0;//用于判断是否删除了页面.如果删除为1.如果没有删除为0
@Override
public int getCount() {
return integerList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
Tag = 0;//默认为0
final View view = View.inflate(ViewPagerActivity.this, R.layout.item_request_image, null);
ImageView ivImg = (ImageView) view.findViewById(R.id.iv_item_request);
ivImg.setImageResource(integerList.get(position));
container.addView(view);
ImageView ivDelect = (ImageView) view.findViewById(R.id.iv_item_request_cancel);
ivDelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View iview) {
Tag = 1;//改为1
integerList.remove(position);
// vp.removeView(view);
// MyViewAdapter.this.destroyItem(container,position,view);
MyViewAdapter.this.notifyDataSetChanged();
Toast.makeText(ViewPagerActivity.this, "点击了"+integerList.size(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
container.removeView((View) object);
}
@Override
public int getItemPosition(Object object) {
//如果是1的话就返回position_none.
return Tag == 1?POSITION_NONE:POSITION_UNCHANGED;
}
}
其实对于刷新adapter的问题.viewpager比较特殊.不行listview和recycleview那样能够通过notifyDataSetChanged进行直接的刷新,由于viewpager的预加载的缘故导致刷新的时候出现了问题.并不是刷新出现了bug
如果想要动态的刷新页面的话.需要重写 getItemPosition,destroyItem两个方法.同时在重写destroyItem的时候需要将super.destroyItem(container, position, object);进行注销
下面的网址是关于viewpager无法更新的详解和其他的adapter更新的处理
http://www.jianshu.com/p/266861496508