最近在做一个功能:主页面添加图片,用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>
这样就可以完美的解决问题了。希望对大家有所帮助,欢迎留言
GridView添加显示图片导致的view复用问题
最新推荐文章于 2021-05-25 16:58:26 发布