在使用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);
}