diff --git a/app/src/main/java/org/android/go/sopt/presentation/main/home/DogAdapter.kt b/app/src/main/java/org/android/go/sopt/presentation/main/home/DogAdapter.kt index 9932a89..cf5e31f 100644 --- a/app/src/main/java/org/android/go/sopt/presentation/main/home/DogAdapter.kt +++ b/app/src/main/java/org/android/go/sopt/presentation/main/home/DogAdapter.kt @@ -3,15 +3,15 @@ package org.android.go.sopt.presentation.main.home import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import org.android.go.sopt.data.Dog import org.android.go.sopt.databinding.ItemDogBinding -class DogAdapter(context: Context) : RecyclerView.Adapter() { +class DogAdapter(context: Context) : ListAdapter(DogDiffCallback()) { private val inflater by lazy { LayoutInflater.from(context) } - private var dogList: List = emptyList() - class DogViewHolder(private val binding: ItemDogBinding) : RecyclerView.ViewHolder(binding.root) { fun onBind(dog: Dog) { @@ -26,14 +26,17 @@ class DogAdapter(context: Context) : RecyclerView.Adapter() { + override fun areItemsTheSame(oldItem: Dog, newItem: Dog): Boolean { + return oldItem.name == newItem.name } - fun setDogList(dogList: List) { - this.dogList = dogList.toList() - notifyDataSetChanged() + override fun areContentsTheSame(oldItem: Dog, newItem: Dog): Boolean { + return oldItem == newItem } } \ No newline at end of file diff --git a/app/src/main/java/org/android/go/sopt/presentation/main/home/HomeFragment.kt b/app/src/main/java/org/android/go/sopt/presentation/main/home/HomeFragment.kt index 4d2490c..e55429d 100644 --- a/app/src/main/java/org/android/go/sopt/presentation/main/home/HomeFragment.kt +++ b/app/src/main/java/org/android/go/sopt/presentation/main/home/HomeFragment.kt @@ -29,7 +29,7 @@ class HomeFragment : Fragment() { super.onViewCreated(view, savedInstanceState) val titleAdapter = TitleAdapter(requireContext()) val dogAdapter = DogAdapter(requireContext()) - dogAdapter.setDogList(viewModel.mockDogList) + dogAdapter.submitList(viewModel.mockDogList) binding.rvHomeDog.adapter = ConcatAdapter(titleAdapter, dogAdapter) }