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

 
  

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

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

具体做法如下(代码):

 
  
GridViewAdapter() {
//声明view数组
  view = new View[mListPhotos.size() + 1];
}

如果数组有变化,就要重新定义如:
 
  
private void insertPhotos(String url) {
  view = new View[mListPhotos.size() + 1];
  mAdapter.notifyDataSetChanged();
}

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

 
  
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();
}


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

 

 


你可能感兴趣的:(android,开发)