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() { 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(LayoutInflater.from(parent.context), R.layout.item_otp, parent, false) }