GridView添加显示图片导致的view复用问题

最近在做一个功能:主页面添加图片,用GridView去显示图片。我刚开始是这么做的:添加完图片后,执行notifyDataSetChanged().按理说可以达到我们想要的效果去更新数据。但是却因为getView的view复用问题导致了图片重复,错乱问题。但是如果不用图片复用的话,那么势必会增加很多内存或开销去显示那么多的图片。所以我们还是得需要view复用,减少加载view,减少内存。

解决方法:对每个view设置一个index,为每个view的imageview设置一张图片,这样肯定不会出现重复的问题。

具体做法如下(代码):

<span style="font-family:FangSong_GB2312;font-size:24px;">GridViewAdapter() {
//声明view数组
  view = new View[mListPhotos.size() + 1];
}</span>

如果数组有变化,就要重新定义如:
<span style="font-family:FangSong_GB2312;font-size:24px;">private void insertPhotos(String url) {
  view = new View[mListPhotos.size() + 1];
  mAdapter.notifyDataSetChanged();
}</span>

在getView中为,为每一个view加载layout,给imageview赋值:

<span style="font-family:FangSong_GB2312;font-size:24px;">if (view[position] == null) {
  view[position] = mInflater.inflate(R.layout.photo_grid_item,null);
  holder = new ViewHolder(view[position]);
  view[position].setTag(holder);
} else {
  holder = (ViewHolder)view[position].getTag();
}</span>


这样就可以完美的解决问题了。希望对大家有所帮助,欢迎留言

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值