RecyclerView使用setHasStableIds(true); 数据错乱

四、notifyDataSetChanged时导致图片闪烁

这个问题比较好解决,一句代码,

mRecyclerViewAdapter.setHasStableIds(true);  
  • 1

要注意,使用上述代码的话,Adapter中的getItemId要重写成如下,如果仍用super.getItemId(position),数据刷新会出错。

  @Override
    public long getItemId(int position) {
        return position;
    }
  • 1
  • 2
  • 3
  • 4

从源码角度来看,相当于我们平时给ImageView和图片做了一个tag绑定,检测到是url没变时,不再重新加载图片,也就不用重新计算、绘制,这样就避免了图片闪烁

你可能感兴趣的:(android)