RecyclerView.Adapter#getItemId()
でユニークな ID を返すRecyclerView.Adapter#setHasStableIds(true)
を行う
これだけで RecyclerView.Adapter#notifyDataSetChanged()
のみでもいい感じにアニメーションしてくれます。
パフォーマンスも良くなります。
ttps://www.reddit.com/r/androiddev/comments/2lr8bf/what_does_recyclerview_sethasstableids_do_and_why/*1
StackOverflow では supportsPredictiveItemAnimations()
で true
を返すようにする必要があると書いてありますが、 Support Library 23.4.0 時点の LinearLayoutManager
では必要ありませんでした。
実演
getItemId()
でユニークなID(今回はデータの primary key
) を返し、全て notifyDataSetChanged()
で変更を伝えています。
毎回 notifyDataInserted()
等を呼ぶよりも簡単にできて便利。