DiffUtil์ ์๋ก ๋ค๋ฅธ ์์ดํ ์ธ์ง๋ฅผ ์ฒดํฌํ์ฌ ๋ฌ๋ผ์ง ์์ดํ ๋ง ๊ฐฑ์ ์ ๋์์ฃผ๋ Util๋ก RecyclerView์ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉํ๋ค. Eugene W. Myers์ ์ฐจ๋ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํ ๋ชฉ๋ก์ ๋ค๋ฅธ ๋ชฉ๋ก์ผ๋ก ๋ณํํ๊ธฐ ์ํ ์ต์ ์ ๋ฐ์ดํธ ์๋ฅผ ๊ณ์ฐํ๋ค๊ณ ํ๋ค.
ListAdapter
์ DiffUtil.ItemCallback
์ areItemsTheSame
๊ณผ areContentsTheSame
๋ ๋ฉ์๋๋ง ์์๋ฐ์ ๊ตฌํํ์ฌ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก DiffUtil.ItemCallback
๋ง ์์๋ณด๋๋ก ํ๋ค.
public abstract static class ItemCallback<T> {
public abstract boolean areItemsTheSame(@NonNull T oldItem, @NonNull T newItem);
public abstract boolean areContentsTheSame(@NonNull T oldItem, @NonNull T newItem);
}
areItemsTheSame
: ํ์ฌ ๋ฆฌ์คํธ์ ๋ ธ์ถํ๊ณ ์๋ ์์ดํ ๊ณผ ์๋ก์ด ์์ดํ ์ด ์๋ก ๊ฐ์์ง ๋น๊ต๋ฅผ ์ํด ๊ณ ์ ํ ID ๊ฐ๋ฑ์ ์ฒดํฌareContentsTheSame
:areItemsTheSame
์ด false์ผ ๊ฒฝ์ฐ ํธ์ถ๋๋ฉฐ, ํ์ฌ ๋ฆฌ์คํธ์ ๋ ธ์ถํ๊ณ ์๋ ์์ดํ ๊ณผ ์๋ก์ด ์์ดํ ์ equals๋ฅผ ๋น๊ต
equals๋ฅผ ๋น๊ตํ ๋ Kotlin data class๋ฅผ ๊ผญ ํ์ฉํ๋๋ก ํ์.