在使用ViewPager对照片进行显示的时候我们往往需要对照片进行多种操作。。比方说放大,缩小,删除等等。
在删除的过程中我们怎么处理适配器才能使在删除后正常显示呢?
class ImagListPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
if(map==null){
return 0;
}
return map.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup view, int position, Object object) {
view.removeView((View)object);
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return POSITION_NONE;
}
@SuppressWarnings("deprecation")
@Override
public Object instantiateItem(ViewGroup view, int position) {
final MyImagView myImagView;
String url = map.get(position).getImgPath();
if (imagViews.containsKey(url)) {
myImagView = imagViews.get(url);
} else {
myImagView = new MyImagView();
myImagView.imageView = new ImageView(MyPhotoShow.this);
myImagView.imageView.setScaleType(ScaleType.CENTER_INSIDE);
imageLoader.displayImage(url, myImagView.imageView, options,
new ImageLoadingListener() {
@Override
public void onLoadingComplete(String arg0,
View arg1, Bitmap arg2) {
myImagView.viewAttacher = new PhotoViewAttacher(
myImagView.imageView);
}
@Override
public void onLoadingCancelled(String arg0,
View arg1) {
}
@Override
public void onLoadingFailed(String arg0, View arg1,
FailReason arg2) {
}
@Override
public void onLoadingStarted(String arg0, View arg1) {
}
});
imagViews.put(url, myImagView);
}
view.addView(myImagView.imageView);
return myImagView.imageView;
}
}
class MyImagView {
ImageView imageView;
PhotoViewAttacher viewAttacher;
}
}
其中@Override
public void destroyItem(ViewGroup view, int position, Object object) {
view.removeView((View)object);
}
就是删除view的方法啦。。当然仅仅这样是不够的。。。如果你是删除之后就退出幻灯片显示照片的话那么这样做OK。。但是如果你仍然停留在幻灯片显示照片这个界面
那你就必须要加上
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return POSITION_NONE;
}
这个方法啦。。。这样才能显示正常咯,,,当然你需要在删除集合中图片之后进行刷新咯。