【问题标题】:NestedScrollView+RecyclerView Slow loadingNestedScrollView+RecyclerView 加载缓慢
【发布时间】:2019-11-02 10:08:38
【问题描述】:

我必须告诉第一件事是有太多类似这个问题的问题。所以请在标记为重复之前分析一次。

我在这两个回收器视图中放置了一个嵌套滚动视图。第一个用于水平滚动。第二个是垂直滚动。

功能运行良好。现在的问题是第一次加载需要 20 秒。因此调用了 ANR 服务。加载后滚动也很完美。

RestarantListAdapter restarantListAdapter = new RestarantListAdapter(activity, restaurants_1);
                    LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(activity, RecyclerView.VERTICAL, false);
                    binding.rvRestaurants.setLayoutManager(linearLayoutManager1);
                    binding.rvRestaurants.setAdapter(restarantListAdapter);

binding.rvRestaurants.setNestedScrollingEnabled(false);

ViewCompat.setNestedScrollingEnabled(binding.rvRestaurants, false);

我试过上面的代码。是否有任何其他可能性来处理首次加载问题。

【问题讨论】:

  • 获取数据后是否设置适配器?尽快设置适配器,然后添加数据。 Aslo 尝试添加 10 个第一个元素,然后用其余元素更新适配器。
  • 不要使用NestedScrollView,使用多种视图类型(getItemViewType)
  • @EpicPandaForce 不仅recycler还有一些其他的看法。
  • @cutiko 你能分享任何例子吗?
  • 您的其他视图可以使用不同的项目类型成为 RecyclerView 的一部分。

标签: android android-recyclerview android-nestedscrollview


【解决方案1】:

当您在 NestedScrollView 中使用 RecyclerView 时,您的所有项目都会立即绘制(您可以检查 onBindViewHolder 被调用了多少次)。所以你基本上失去了 RecyclerView 提供的所有性能改进,并得到了类似于 ListView 的东西。因此,如果您真的不必在 NestedScrollView 中使用 RecyclerView,请不要这样做。

【讨论】:

  • 肯定需要在 nestedscrollview 中使用 Recyclerview。如何处理。
  • 如果 NestedScrollView 中只有这两个 RecyclerView,我会尝试将水平的 RecyclerView 放在垂直的内作为一行(不同的 viewType)并删除此 NestedScrollView。这应该会显着提高性能
  • 不,我也有其他看法。
  • 所以我看到的唯一可能性是分页。不要一次加载所有数据
  • ListView 也回收视图。 API 没有那么好和可扩展。
猜你喜欢
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多