RecyclerView中的setRecycledViewPool方法

Abh*_*ddy 3 java android android-layout android-view android-recyclerview

我试图理解setRecycledViewPool方法实际上与下面的代码行中的RecyclerView一起做什么,其中mrecyclerView是RecyclerView对象:

mrecyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
Run Code Online (Sandbox Code Playgroud)

我阅读了Android文档链接,但我仍然不明白它的作用.有人可以向我解释它的用途以及何时使用它?

azi*_*ian 13

来自docs:

循环视图池允许多个RecyclerView共享一个公共的废料视图池.如果您有多个使用相同视图类型的适配器的RecyclerView,这可能很有用,例如,如果您有多个数据集具有ViewPager显示的相同类型的项目视图.

默认情况下,ViewHolder池中会保留5 秒以用于特定的viewType.如果您想更改该计数,可以这样做:

recyclerView.getRecycledViewPool()
            .setMaxRecycledViews(SOME_VIEW_TYPE, POOL_CAPACITY);
Run Code Online (Sandbox Code Playgroud)

来自这篇博文:

那么我们如何选择最佳的游泳池大小呢?似乎最佳策略是在你需要它之​​前扩展池,并在之后缩小它.实现此目的的一种肮脏方式如下:

recyclerView.getRecycledViewPool().setMaxRecycledViews(0, 20);
adapter.notifyDataSetChanged();
new Handler().post(new Runnable() {
    @Override
    public void run() {
        recyclerView.getRecycledViewPool()
                    .setMaxRecycledViews(0, 1);
    }
});
Run Code Online (Sandbox Code Playgroud)


Ali*_*sel 6

setRecycledViewPool(...)当我们有一个嵌套的RecyclerView时会很有用。请参见博客文章的详细信息。此处添加了相同链接的简短描述。

考虑一个嵌套RecyclerViews和inner RecycleView共享相同视图结构的情况。RecycledViewPool提供了一种在这些内部(嵌套)之间共享视图的隐秘方式RecyclerView

下图显示了这种情况的示例:

在此处输入图片说明

如您所见,两个列表的视图类型相同。

  • 此外,我们还应该小心点击项目的听众。因为如果我们使用多个 RecyclerView,我们的项目可以具有相同的位置,因此单击事件可以重叠。 (4认同)