2015-02-08 91 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

相關問題