2015-02-08 93 views
0

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

我的问题是我如何更新和移动到卡片视图或列表项上方。我目前的解决方案是清除,然后收到消息时添加所有消息。

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

回答

2

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

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

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

mAdapter.addItemAtIndex(0, object); 

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

+0

我的问题不是关于添加一个新项目,找到一个项目,更新它并移动到顶部 – onatm 2015-02-09 09:46:50

+0

对不起,我一定误解了这个问题。尝试Collections.swap(mChatHistoryList,mChatHistoryList.indexOf(chatHistory),0);然后调用notifyDataSetChanged。 – eclipse1203 2015-02-09 18:15:22

+0

有任何机会在交换时动画物品? – onatm 2015-03-18 22:54:13

相关问题