【发布时间】: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