似乎无法掌握其中发生的一切。
最近将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滚动到顶部以自动调整底部添加的子视图的指针,将不胜感激。
答案 0 :(得分:0)
尝试使用此方法,而不是通知整个数据集已更改。
notifyItemChanged(position);