最近写了一个 图片多选下载的需求,
类似这样,长按图片,或点击下载,变成下面的样式
这个效果肯定是recyclerView notifyDataSetChanged去改变状态,但是如果不处理 图片会重新加载,
首先想到的解决方案是给viewholder的imageView设置tag,像这样
if (!img.getLittle().equals(holder.imageView.getTag())) { holder.imageView.setTag(img.getLittle()); ImageLoader.getInstance().displayImage(img.getLittle(), holder.imageView); }
但是,如果只是这样的话,还是会重新加载图片,跟了很久代码之后,发现ViewHolder只保留了四个,具体原因 还不清楚,
但是设置了adapter的setHasStableIds为true时,就可以了。
mAdapter.setHasStableIds(true);
看一下setHasStableIds的源码注释就可以看出来,这样设置之后,每一个item都会有一个独特的标识。