59 lines
2.1 KiB
Kotlin
Raw Normal View History

2024-03-29 00:10:55 -06:00
package com.isolaatti.search.presentation
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
2025-01-29 00:41:04 -06:00
import coil3.load
2024-03-29 00:10:55 -06:00
import com.isolaatti.R
import com.isolaatti.databinding.UsersCarouselItemBinding
import com.isolaatti.profile.domain.entity.ProfileListItem
2024-03-29 00:10:55 -06:00
import com.isolaatti.search.data.ProfileSearchDto
import com.isolaatti.utils.UrlGen
class UserCarouselAdapter(
private val onProfileClick: (profileId: Int) -> Unit = {}
) : ListAdapter<ProfileListItem, UserCarouselAdapter.UserCarouselItemViewHolder>(itemCallback) {
2024-03-29 00:10:55 -06:00
companion object {
val itemCallback = object: DiffUtil.ItemCallback<ProfileListItem>() {
2024-03-29 00:10:55 -06:00
override fun areItemsTheSame(
oldItem: ProfileListItem,
newItem: ProfileListItem
2024-03-29 00:10:55 -06:00
): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(
oldItem: ProfileListItem,
newItem: ProfileListItem
2024-03-29 00:10:55 -06:00
): Boolean {
return oldItem == newItem
}
}
}
inner class UserCarouselItemViewHolder(val usersCarouselItemBinding: UsersCarouselItemBinding) : ViewHolder(usersCarouselItemBinding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserCarouselItemViewHolder {
return UserCarouselItemViewHolder(UsersCarouselItemBinding.inflate(LayoutInflater.from(parent.context), parent, false))
}
override fun onBindViewHolder(holder: UserCarouselItemViewHolder, position: Int) {
val user = getItem(position)
holder.usersCarouselItemBinding.userCarouselName.text = user.name
if(user.profileImageId != null) {
holder.usersCarouselItemBinding.userCarouselImageView.load(UrlGen.imageUrl(user.profileImageId))
2024-03-29 00:10:55 -06:00
} else {
holder.usersCarouselItemBinding.userCarouselImageView.load(R.drawable.avatar)
}
holder.usersCarouselItemBinding.userCarouselCard.setOnClickListener { onProfileClick(user.id) }
}
}