Android RecyclerView 从后台侦听器更新项目并移至顶部

Android RecyclerView update item from background listener and move top

我正在从事即时通讯项目。有一个消息处理程序后台服务正在侦听传入的消息,通过 greenrobot 的事件总线创建事件以订阅 Activity,并且 activity 刷新 RecyclerView 以获取更新的消息。 RecyclerView 仅显示人们的最新消息。

我的问题是如何更新卡片视图或列表项并将其移至顶部。我目前的解决方案是在收到消息时清除然后添加所有消息。

您可以找到消息流的实现 here

RecyclerView.Adapter class 以与 BaseAdapter 相同的方式在 ArrayList 中存储数据。如果你想在某个位置添加一个项目,只需将该对象插入到你指定索引处的数据中。例如,您可以在 ChatHistoryRecyclerViewAdapter 中创建这样的方法。

public void addItemAtIndex(int index, ChatHistory chatHistory){
   mChatHistoryList.add(index, chatHistory);
   notifyDataSetChanged();
}

然后,如果您想在列表的最顶部插入一个项目,您会调用

mAdapter.addItemAtIndex(0, object);

如果您需要添加多个项目,您可以考虑删除 notifyDataSetChanged() 调用,并且仅在对基础数据集进行所有更新后调用它。