RecyclerView和LayoutManager的cache问题导致的Glide图片错乱

设置setHasStableIds(true)时,

一定要重写Adapter的getItemId(),一定要重写Adapter的getItemId(),一定要重写Adapter的getItemId(),让返回值是唯一的.


RecyclerView.setItemViewCacheSize(int size)

看注释

Set the number of offscreen views to retain before adding them to the potentially shared recycled view pool.
The offscreen view cache stays aware of changes in the attached adapter, allowing a LayoutManager to reuse those views unmodified without needing to return to the adapter to rebind them.
Parameters:
size - Number of views to cache offscreen before returning them to the general recycled view pool

在添加到回收池之前,RecyclerView保留的屏幕外的view数量。
也就是说 这是属于RecyclerView自己管理的缓存view
LinearLayoutManager.setRecycleChildrenOnDetach()
看注释
Set whether LayoutManager will recycle its children when it is detached from RecyclerView.
If you are using a RecyclerView.RecycledViewPool, it might be a good idea to set this flag to true so that views will be avilable to other RecyclerViews immediately.
Note that, setting this flag will result in a performance drop if RecyclerView is restored.
Parameters:
recycleChildrenOnDetach - Whether children should be recycled in detach or not.

一般和RecycledViewPool一起使用,一般多个RecyclerView共享一个RecycledViewPool,方便快速回收利用。


你可能感兴趣的:(RecyclerView和LayoutManager的cache问题导致的Glide图片错乱)