在使用RecyclerView时,当数据更新之后,立即调用notifyDataSetChanged方法进行全局刷新,会导致图片加载闪烁。
解决方法::
1.为adapter提供stableId:
@Override
public long getItemId(int position) {
return position;
}
更简单一点,可以如上代码所示直接return item的position。
2.设置item的setHasStableIds()为true:
adapter.setHasStableIds(true);
在listview中也有复写此方法的方案。
3. 自定义TAG:
Object tag = holder.ivPirture.getTag(); if(tag==null || !tag.equals(item.songId)){ holder.ivPirture.setTag(item.songId); Uri uri = Uri.parse(MessageFormat.format(Constants.URL_HEAD, String.valueOf(item.singerId))); holder.ivPirture.setImageURI(uri); }