【问题标题】:Don't recycle specific view type in RecyclerView不要在 RecyclerView 中回收特定的视图类型
【发布时间】:2016-11-09 15:19:37
【问题描述】:

我有一个正在重用视图的回收器视图,我的问题是一个视图持有者包含一个 ViewPager,如果回收者视图的适配器重用视图持有者被膨胀的视图,那么在 viewpager 上会发生异常。 但是,onCreateViewHolder 方法只在第一次调用。我怎样才能避免这种行为并实现 onCreateViewHolder 可以被多次调用?

提前致谢

【问题讨论】:

  • 避免在 recyclerview 上重复使用项目 == 避免在 RecyclerView 中回收视图 ...那么为什么要使用 RecyclerView 呢?
  • 现在说真的......你为什么不带着你面临的代码和异常的最小示例回到这里呢?使用 RecyclerView 并修复错误不是更好吗?
  • @Selvin 即使视图没有被回收,使用 recyclerview 仍然有用,主要是视图仅在初始加载时根据需要创建。

标签: android android-viewpager android-recyclerview android-adapter


【解决方案1】:

使用recyclerView.getRecycledViewPool().setMaxRecycledViews(YOUR_VIEW_TYPE, 0);这将禁用指定视图类型的回收

【讨论】:

    【解决方案2】:

    这就是 getItemViewType 覆盖的用途。

    如果您覆盖 getItemViewType 以为 ViewPager 位置返回不同的值,RecyclerView 将使用它来知道何时应该回收视图。

    【讨论】:

    • 我已经在使用它了,我的问题是这是同一个位置上的同一个类型。当我向下滚动然后再次向上滚动时,问题正在发生(因此再次显示相同的视图)
    • 那么你真的需要发布你的代码和你的logcat,这应该不难修复。
    猜你喜欢
    • 2017-10-21
    • 2016-10-02
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多