Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用RecyclerView实现ViewCacheExtension?_Android_Android Recyclerview - Fatal编程技术网

Android 如何使用RecyclerView实现ViewCacheExtension?

Android 如何使用RecyclerView实现ViewCacheExtension?,android,android-recyclerview,Android,Android Recyclerview,我找不到任何使用ViewCacheExtension的示例或场景。文件说: 调用getViewForPosition(int)时,回收者会检查附加的废料 和一级缓存以查找匹配的视图。如果找不到 在合适的视野下,回收商将呼叫 检查前获取位置和类型(回收器、整型、整型)的视图 RecycleView.RecycledViewPool 我有几个相关的疑问: 据我所知,随附的废纸是一个不需要重新整理的视图列表。但什么是“一级缓存” 方法文档说明: 此方法不应创建新视图 我还可以如何返回视图?我能想到的唯

我找不到任何使用ViewCacheExtension的示例或场景。文件说:

调用getViewForPosition(int)时,回收者会检查附加的废料 和一级缓存以查找匹配的视图。如果找不到 在合适的视野下,回收商将呼叫 检查前获取位置和类型(回收器、整型、整型)的视图 RecycleView.RecycledViewPool

我有几个相关的疑问:

  • 据我所知,随附的废纸是一个不需要重新整理的视图列表。但什么是“一级缓存”
  • 方法文档说明:
  • 此方法不应创建新视图

    我还可以如何返回视图?我能想到的唯一方法是在ViewCacheExtension中缓存废弃的视图。当ViewCacheExtension已满时,请尝试将数据移动到RecycledViewPool。有人能证实我是对的吗?拥有4个级别的缓存(报废、“第一级”、ViewCacheExtension、RecycledViewPool)有什么意义


    即使在查看了RecyclerView源代码之后,我也找不到正在实现的ViewCacheExtensions的引用。

    我遇到了类似的问题,因为我需要缓存recycler视图项(我正在扩展RecyclerView中使用的视图,并且大小是可变的……因此每次都会出现视图膨胀和突然的抖动)

    已经提供了recycler视图缓存,我想recycler视图会这样做,只是缓存大小设置为零

    因此,当我添加这行缓存是成功的,这只是第一次

    mRecyclerView.setItemViewCacheSize(data.getCount());
    
    但如果用户只想缓存特定的视图,我也会感到困惑。如果你得到什么,请发邮件


    希望有帮助:)

    谢谢。我也采取了类似的方法,但我不确定data.getCount()太大对内存的副作用。RecyclerView中默认的
    ItemViewCacheSize
    为2。这用于在用户滚动时保留项目。如果将其设置为与数据大小相等,则RecyclerView将无法完成其工作。我不会回收任何东西。您将失去大部分性能增益。您可以从本文中找到演示:ViewCacheExtension可用于保存特殊视图,因此我们可能不需要实现此功能。