ViewPager幻灯片删除出现显示黑色问题

本文探讨了在使用ViewPager展示照片并执行删除操作时遇到的显示问题,主要聚焦于如何正确处理适配器以确保删除后能正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用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;
		}
这个方法啦。。。这样才能显示正常咯,,,当然你需要在删除集合中图片之后进行刷新咯。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值