RecyclerView中ViewHolders的最小数量?

时间:2017-03-17 21:14:37

标签: android android-recyclerview android-viewholder

我正在使用修改后的TwoWayView https://github.com/lucasr/twoway-view

我正在使用SpannableGridLayoutManager,因此我的观看次数可能各不相同。 如果我的前几个视图大小很大,那么滚动会变得迟钝,因为视图的数量会发生变化(因此视图持有者的数量会发生变化)

我的方法setMaxRecycledViews在我滚动了一点后效果很好。

我也试过和getExtraLayoutSpace一起玩,但我不认为这就是我应该使用的。

基本上我有一个网格可以有不同大小的视图,但它们具有相同的布局。在顶部有一个占据整个空间的视图,这是一个占据整个宽度的视图。因此它加载了2个视图持有者,但是当我快速滚动时需要16个视图持有者,这会导致延迟。

有没有办法强制使用最少量的ViewHolders?

1 个答案:

答案 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时,视图持有者已经在池中。