RecyclerViewアダプタに新しいデータを一度に入力するので、アイテムの挿入や削除は一切ありません。適切にNotifyItemMovedを挿入、削除し、RecyclerView古いデータリストに新鮮なリストを割り当てるとき
単純に、私は古いリストを持っており、あるイベントが発生したときに新しいリストを取得して、新しいリストを古いものに割り当てることができます。
問題があった場合にアイテムが新しいリスト(旧位置から新にすべきnotifyItemMoved)
- 作ることができないです新しいリストに新しい項目(新しいリスト内のその位置でをnotifyItemInserted必要があります)
- 古い項目が新しいリストに存在しない(その位置でnotifyItemRemoved必要があります)
私は最初のケースのために働くだろうと思った私は今持っている何か、である - 新しい位置にアイテム移動:しかし、予想通り、それはない作品
if(currentAdapterData!= null){
for(int i = 0; i < currentAdapterData.size(); i++){
for(int j = 0; j < newData.size(); j++){
if(currentAdapterData.get(i).getSomeIdentifier().equals(newData.get(j).getSomeIdentifier())){
Log.v("same item", "currentAdapterData index :" + i + " ," + currentAdapterData.get(i).getSomeIdentifier() + " == newData index: " + j + " ," + newData.get(j).getSomeIdentifier());
if(i != j){
notifyItemMoved(i, j);
}
}
}
}
}
currentAdapterData = newData;
、および(正しい)のログとの間に違いがあります電話に表示されるリスト(間違ったアイテムの位置、重複したもの、バグなど)
どのようにして動作させることができますか? notifyItemMoved、notifyItemInsertedおよびnotifyItemRemovedを使用していますか?
変更されたアニメーションで項目を更新するのではなく、リスト全体を更新するため、NofifyDataSetChangedを使用したくありません。
これはあなたのHEPすべきhttps://stackoverflow.com/questions/31367599/how-to-update-recyclerview-adapter-data – Anonymous