From b92d429efc7d4012ef887efbe8fefd2e13f73593 Mon Sep 17 00:00:00 2001 From: 62160052 <62160052@go.buu.ac.th> Date: Sat, 24 Sep 2022 20:19:38 +0700 Subject: [PATCH] Add the photo grid adapter --- .../marsphotos/overview/PhotoGridAdapter.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt diff --git a/app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt b/app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt new file mode 100644 index 0000000..b63d5f4 --- /dev/null +++ b/app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt @@ -0,0 +1,42 @@ +package com.example.android.marsphotos.overview + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.example.android.marsphotos.databinding.GridViewItemBinding +import com.example.android.marsphotos.network.MarsPhoto + +class PhotoGridAdapter : ListAdapter<MarsPhoto, + PhotoGridAdapter.MarsPhotoViewHolder>(MarsPhotoViewHolder) { + class MarsPhotoViewHolder(private var binding: + GridViewItemBinding + ): + RecyclerView.ViewHolder(binding.root) { + fun bind(MarsPhoto: MarsPhoto) { + binding.photo = MarsPhoto + binding.executePendingBindings() + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PhotoGridAdapter.MarsPhotoViewHolder { + return MarsPhotoViewHolder(GridViewItemBinding.inflate( + LayoutInflater.from(parent.context))) + } + + override fun onBindViewHolder(holder: PhotoGridAdapter.MarsPhotoViewHolder, position: Int) { + val marsPhoto = getItem(position) + holder.bind(marsPhoto) + } + + companion object DiffCallback : DiffUtil.ItemCallback<MarsPhoto>() { + override fun areItemsTheSame(oldItem: MarsPhoto, newItem: MarsPhoto): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: MarsPhoto, newItem: MarsPhoto): Boolean { + return oldItem.imgSrcUrl == newItem.imgSrcUrl + } + } +} \ No newline at end of file -- GitLab