我正在使用修改后的TwoWayView https://github.com/lucasr/twoway-view
我正在使用SpannableGridLayoutManager
,因此我的观看次数可能各不相同。
如果我的前几个视图大小很大,那么滚动会变得迟钝,因为视图的数量会发生变化(因此视图持有者的数量会发生变化)
我的方法setMaxRecycledViews
在我滚动了一点后效果很好。
我也试过和getExtraLayoutSpace
一起玩,但我不认为这就是我应该使用的。
基本上我有一个网格可以有不同大小的视图,但它们具有相同的布局。在顶部有一个占据整个空间的视图,这是一个占据整个宽度的视图。因此它加载了2个视图持有者,但是当我快速滚动时需要16个视图持有者,这会导致延迟。
有没有办法强制使用最少量的ViewHolders?
答案 0 :(得分:2)
这对我来说很有把戏
RecyclerView.RecycledViewPool recycledViewPool = new RecyclerView.RecycledViewPool();
recycledViewPool.setMaxRecycledViews(0, 16);
MyAdapter adapter = new MyAdapter(getContext());
for (int i = 0; i < 16; i++) {
MyAdapter.SimpleViewHolder simpleViewHolder = myAdapter.createViewHolder(mTwoWayView, 0);
recycledViewPool.putRecycledView(simpleViewHolder);
}
recyclerView.setRecycledViewPool(recycledViewPool);
基本上在开始之前,将最大碎片增加到15(从默认值5开始)并添加12个碎片。这样,当网格布局从显示1更改为16时,视图持有者已经在池中。