From 0d824b4910d5adb33e9829c588f183c32ca600a0 Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Fri, 10 Jun 2022 18:30:07 +0300 Subject: [PATCH] Create view holder --- .../feature/people/list/PeopleViewHolder.kt | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 app/src/main/java/com/futo/circles/feature/people/list/PeopleViewHolder.kt diff --git a/app/src/main/java/com/futo/circles/feature/people/list/PeopleViewHolder.kt b/app/src/main/java/com/futo/circles/feature/people/list/PeopleViewHolder.kt new file mode 100644 index 000000000..405321c7a --- /dev/null +++ b/app/src/main/java/com/futo/circles/feature/people/list/PeopleViewHolder.kt @@ -0,0 +1,63 @@ +package com.futo.circles.feature.people.list + +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.futo.circles.core.list.ViewBindingHolder +import com.futo.circles.core.list.context +import com.futo.circles.databinding.InviteHeaderListItemBinding +import com.futo.circles.databinding.PeopleListItemBinding +import com.futo.circles.extensions.loadProfileIcon +import com.futo.circles.extensions.onClick +import com.futo.circles.extensions.setIsVisible +import com.futo.circles.model.PeopleHeaderItem +import com.futo.circles.model.PeopleListItem +import com.futo.circles.model.PeopleUserListItem + +abstract class PeopleViewHolder(view: View) : RecyclerView.ViewHolder(view) { + abstract fun bind(data: PeopleListItem) +} + +class PeopleUserViewHolder( + parent: ViewGroup, + private val onUserClicked: (Int) -> Unit, + private val onIgnore: (Int, Boolean) -> Unit +) : PeopleViewHolder(inflate(parent, PeopleListItemBinding::inflate)) { + + private companion object : ViewBindingHolder + + private val binding = baseBinding as PeopleListItemBinding + + init { + onClick(itemView) { position -> onUserClicked(position) } + onClick(binding.btnIgnore) { position -> onIgnore(position, true) } + onClick(binding.btnUnignore) { position -> onIgnore(position, false) } + } + + override fun bind(data: PeopleListItem) { + if (data !is PeopleUserListItem) return + + with(binding) { + userItem.tvUserName.text = data.user.name + userItem.tvUserId.text = data.id + userItem.ivUserImage.loadProfileIcon(data.user.avatarUrl, data.user.name) + btnIgnore.setIsVisible(!data.isIgnored) + btnUnignore.setIsVisible(data.isIgnored) + } + } +} + +class PeopleHeaderViewHolder( + parent: ViewGroup, +) : PeopleViewHolder(inflate(parent, InviteHeaderListItemBinding::inflate)) { + + private companion object : ViewBindingHolder + + private val binding = baseBinding as InviteHeaderListItemBinding + + override fun bind(data: PeopleListItem) { + if (data !is PeopleHeaderItem) return + + binding.tvHeader.text = context.getString(data.titleRes) + } +} -- GitLab