Android RecyclerView从后台监听器更新项目并移动顶部

时间:2015-02-08 22:41:34

标签: android android-5.0-lollipop android-recyclerview

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

我的问题是如何更新并移至顶部的cardview或列表项。我当前的解决方案是清除,然后在收到消息时添加所有消息。

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

1 个答案:

答案 0 :(得分:2)

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

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

然后,如果您要在列表的最顶部插入一个项目,那么

mAdapter.addItemAtIndex(0, object);

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