ViewPager循环滑动图片集合,以及删除图片功能

最近在做一个项目,需要的功能,用viewPager展示图片,可左右循环滑动,且可删除。遇到了很多阻碍,现将自己的一些经验总结如下。

1. 左右循环滑动:

按照ViewPager的特性:可以从第一张滑到最后一张,但是无法循环滑动。怎么解决?

思路:在图片集合中,多出两个位置。第一张放置最后一张图片,最后一个位置放置第一张图片。中间放你的图片集合。

代码:

<span style="font-size:24px;">void pageSelected(int position) {
  if (position == 0) {
//当向左滑动到第一张时,就让pager设置当前项为图片集合的最后一站
    mPagers.setCurrentItem(mListPhotos.size(), false);
  } else if (position == mImageViews.size() - 1) {
  //滑动到最后一张时,设置pager当前项为图片集合的第一张。Flase指的是不要动画,因为pager动画是从右向左,我们循环播放可能会出现不对称的情况,所以要设置为false;  
   mPagers.setCurrentItem(1,false);
  } else {
    mPagers.setCurrentItem(position);
  }
}</span>


2. 删除功能

遇到的问题是点击删除后,已删除图片还在,也就是调用notifyDataSetChanged()方法不能更新视图view,但是左右滑动后,整个集合都正常了
解决方法:重写下面的代码后,pageadapter就会去每滑到一个position,都会去调用destroyItem()方法先毁掉这个position内容,然后再调用instantiateItem()方法重新生成view 

 

<span style="font-size:24px;">@Override public int getItemPosition(Object object) {
  return POSITION_NONE;
}</span>


另一个问题:这样如果你的集合中已经删除了该张图片,那么执行完上述代码后,该页面就会显示空白。

解决方法:

<span style="font-size:24px;">@Override public void destroyItem(ViewGroup container, int position, Object object) {
  ImageView imageView = mImageViews.get(position % mImageViews.size());
  container.removeView(imageView);
  imageView.setImageBitmap(getBitmap(mCurUrl));
}</span>


这样就可以让他显示删除图片后当前应该显示的图片。

希望对由此困苦的码农有些帮助

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值