天天看點

RecyclerView調用notifyDataSetChanged重新整理,圖檔閃爍

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