PagedListAdapter:怪异的运行时行为

时间:2018-07-20 11:43:18

标签: android android-adapter

我在专用于聊天的片段中使用PageListAdapter(就像在任何现代消息传递应用程序中一样)。我最初只使用RecyclerView,但是非常令人不安。之后,我进行了进一步搜索并遇到了PagedListAdapter,但是,这里有其独特的局限性和错误。滚动行为更加紧张和怪异。每当使用RxJava Flowable加载的DB中的数据发生更改时,大多数视图都会重新创建,因为RecyclerView中的所有消息/视图都开始闪烁,滚动位置会自动更改并滚动到中间的某个位置。

所以,基本上我有以下问题:

如何从PagedListAdapter的最后一页开始视图? 如何防止PagedListAdapter自动滚动?

1 个答案:

答案 0 :(得分:0)

RecyclerView(从beta3 / beta4)中使用MotionLayout时,我遇到了类似的问题。 我正在使用MotionLayout来实现可滑动覆盖(在纵向下从底部开始,在水平模式下从左侧开始)。 在水平模式下,更新RecyclerView可以正常进行,因为在水平模式下,覆盖层占据了整个屏幕,RecyclerView也是如此。 但是在纵向模式下,我只需要将覆盖图滑动到整个屏幕的一半,因此RecyclerView并不是全屏的。

在这种情况下,RecyclerView更新时整个视图都在改变其大小,从而创建了一个跳转列表(当插入新的聊天消息时,该列表将跳转到另一个位置)。

仍然没有弄清楚到底是为什么,而且我不确定这是因为MotionLayout,但它是主要的可疑之处。

我的解决方案是固定高度,以便列表在更新时不会更改大小。我已覆盖getHeight的{​​{1}}函数,并设置了片段LayoutManager中的固定大小。 另外,如果出现键盘,则需要保持此布局侦听器的大小不变。

onViewCreated()