Android 28.0.0 v7 RecyclerView滚动问题

时间:2018-12-17 19:16:40

标签: android android-recyclerview android-adapter recycler-adapter

似乎无法掌握其中发生的一切。

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

当动态内容以视图的形式添加到底部的RecyclerView时,RecyclerView会自动滚动到顶部。

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

这是棘手的部分,这些适配器将至少4到6个“不同”视图类型注入到RecyclerView中。精选内容,Google广告,某种形式的最新内容,第三方赞助商提供的赞助内容,视频点播内容,横幅内容等。

至少,必须包含精选内容,Google广告和赞助商内容,再加上任何最新内容,其中可能包括或可能不包括视频点播内容。每个内容类型都是一个独立的RESTful API端点,响应回调通过Otto-EventBus框架进行发布和订阅,并且适配器将填充为响应方式以及如何接收响应。

存在问题。 “特色内容”响应可能不是更新到适配器的第一个响应。 Google广告可能是更新适配器的第一个或最后一个响应,也可能不是。赞助内容也是如此。不管响应填充到适配器以进行显示的顺序如何,以前的API-23都可以通过notifyDataSetChanged()很好地工作。

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

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

1 个答案:

答案 0 :(得分:0)

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

notifyItemChanged(position);