我在专用于聊天的片段中使用PageListAdapter(就像在任何现代消息传递应用程序中一样)。我最初只使用RecyclerView,但是非常令人不安。之后,我进行了进一步搜索并遇到了PagedListAdapter,但是,这里有其独特的局限性和错误。滚动行为更加紧张和怪异。每当使用RxJava Flowable加载的DB中的数据发生更改时,大多数视图都会重新创建,因为RecyclerView中的所有消息/视图都开始闪烁,滚动位置会自动更改并滚动到中间的某个位置。
所以,基本上我有以下问题:
如何从PagedListAdapter的最后一页开始视图? 如何防止PagedListAdapter自动滚动?
答案 0 :(得分:0)
在RecyclerView
(从beta3 / beta4)中使用MotionLayout
时,我遇到了类似的问题。
我正在使用MotionLayout
来实现可滑动覆盖(在纵向下从底部开始,在水平模式下从左侧开始)。
在水平模式下,更新RecyclerView可以正常进行,因为在水平模式下,覆盖层占据了整个屏幕,RecyclerView也是如此。
但是在纵向模式下,我只需要将覆盖图滑动到整个屏幕的一半,因此RecyclerView
并不是全屏的。
在这种情况下,RecyclerView
更新时整个视图都在改变其大小,从而创建了一个跳转列表(当插入新的聊天消息时,该列表将跳转到另一个位置)。
仍然没有弄清楚到底是为什么,而且我不确定这是因为MotionLayout,但它是主要的可疑之处。
我的解决方案是固定高度,以便列表在更新时不会更改大小。我已覆盖getHeight
的{{1}}函数,并设置了片段LayoutManager
中的固定大小。
另外,如果出现键盘,则需要保持此布局侦听器的大小不变。
onViewCreated()