【发布时间】:2017-08-24 16:55:48
【问题描述】:
我正在尝试使用 recyclerView 创建消息类型的屏幕,该屏幕将从底部开始,并在用户到达聊天的顶端时加载更多数据。但我正面临这个奇怪的问题。
我的 recyclerView 在调用 notifyDataSetChanged 时滚动到顶部。由于这个 onLoadMore 被多次调用。
这是我的代码:
LinearLayoutManager llm = new LinearLayoutManager(context);
llm.setOrientation(LinearLayoutManager.VERTICAL);
llm.setStackFromEnd(true);
recyclerView.setLayoutManager(llm);
** 在适配器中
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (messages.size() > 8 && position == 0 && null != mLoadMoreCallbacks) {
mLoadMoreCallbacks.onLoadMore();
}
** 活动中
@Override
public void onLoadMore() {
// Get data from database and add into arrayList
chatMessagesAdapter.notifyDataSetChanged();
}
只是 recyclerView 滚动到顶部。如果滚动到顶部停止,此问题将得到解决。请帮我找出这个问题的原因。提前致谢。
【问题讨论】:
-
你可以尝试添加 mLayoutManager.setReverseLayout(true);到你的布局管理器。
-
再次使用通知设置您的适配器。可能对你有帮助
-
addonscrollListener 到你的 recyclerview 并找到你当前可见项目的正确位置然后调用 onLoadMore() 方法,并尝试从你的活动而不是适配器调用这个方法
标签: android android-recyclerview notifydatasetchanged linearlayoutmanager