【问题标题】:Android 28.0.0 v7 RecyclerView scroll issuesAndroid 28.0.0 v7 RecyclerView 滚动问题
【发布时间】:2018-12-17 19:16:39
【问题描述】:

似乎不知道里面发生了什么。

最近将 RecyclerView 从以前的 API-23 更新到 API-28 和相应的 support-v7 库。

由于动态内容以 Views 的形式添加到 RecyclerView 的底部,RecyclerView 会自动滚动到顶部。

我的应用程序的主页,即启动页面之后的主页有 4 个选项卡 - 托管在典型 ViewPager 中的片段,带有选项卡栏设置和所有内容。每个 Fragment 都托管一个 RecyclerView,由典型的 RecyclerView.Adapter 支持。

这是棘手的部分,至少有 4 到 6 个“不同”视图类型由这些适配器注入到 RecyclerView。特色内容、谷歌广告、某种形式的最新内容、来自第三方赞助商的赞助内容、视频点播内容、横幅内容等。

至少,精选内容、Google 广告和赞助内容是必须的,其次是任何最新内容,可能还包括也可能不包括视频点播内容。每个内容类型都是一个独立的 RESTful API 端点,响应回调通过 Otto-EventBus 框架发布和订阅,Adapter 被填充为以及如何接收响应。

这就是问题所在。特色内容响应可能是也可能不是更新到适配器的第一响应。 Google Ad 可能是也可能不是更新到适配器的第一个或最后一个响应。赞助内容也是如此。无论将响应填充到适配器以进行显示的顺序如何,以前的 API-23 都可以与 notifyDataSetChanged() 一起正常工作。

当前 API-28 自动将 RecyclerView 滚动到顶部,即使在对每个更新到适配器的 RESTful-API 响应使用 DiffUtil 之后也是如此。我已经用尽了所有选项和解决方案来阻止 RecyclerView 通过滚动到顶部来自动调整。

任何防止 RecyclerView 滚动到顶部以自动调整底部添加的子视图的指针将不胜感激。

【问题讨论】:

    标签: android android-adapter android-recyclerview


    【解决方案1】:

    尝试使用它,而不是通知整个数据集已更改。

    notifyItemChanged(position);
    

    【讨论】:

    • 不,没用。我希望 DiffUtil 无论如何都会在内部处理这个问题,这是我解决问题的最新尝试。问题是 RecyclerView 通过自动滚动到顶部进行调整,因为新元素和视图继续向底部填充。
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多