123456789101112131415161718192021222324252627282930 |
- package com.chameth.yaotp
-
- import android.view.LayoutInflater
- import android.view.ViewGroup
- import androidx.databinding.DataBindingUtil
- import androidx.fragment.app.FragmentActivity
- import androidx.recyclerview.widget.RecyclerView
- import com.chameth.yaotp.databinding.ItemOtpBinding
- import com.chameth.yaotp.viewmodel.OtpListViewModel
-
- class OtpListAdapter(private val owner: FragmentActivity, private val viewModel: OtpListViewModel) : RecyclerView.Adapter<OtpListAdapter.OtpViewHolder>() {
-
- class OtpViewHolder(val binding: ItemOtpBinding) : RecyclerView.ViewHolder(binding.root)
-
- init {
- viewModel.addObserver(object : OtpListViewModel.AccountObserver {
- override fun accountAdded(position: Int) = notifyItemInserted(position)
- override fun accountRemoved(position: Int) = notifyItemRemoved(position)
- })
- }
-
- override fun getItemCount() = viewModel.numberOfAccounts
- override fun onCreateViewHolder(parent: ViewGroup, itemType: Int) = OtpViewHolder(inflateWithBinding(parent)).also { it.binding.setLifecycleOwner(owner) }
- override fun onBindViewHolder(viewHolder: OtpViewHolder, position: Int) {
- viewHolder.binding.viewmodel = viewModel.getViewModelForAccount(position)
- }
-
- private fun inflateWithBinding(parent: ViewGroup) = DataBindingUtil.inflate<ItemOtpBinding>(LayoutInflater.from(parent.context), R.layout.item_otp, parent, false)
-
- }
|