Yet Another OTP generator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

OtpListAdapter.kt 1.4KB

123456789101112131415161718192021222324252627282930
  1. package com.chameth.yaotp
  2. import android.view.LayoutInflater
  3. import android.view.ViewGroup
  4. import androidx.databinding.DataBindingUtil
  5. import androidx.fragment.app.FragmentActivity
  6. import androidx.recyclerview.widget.RecyclerView
  7. import com.chameth.yaotp.databinding.ItemOtpBinding
  8. import com.chameth.yaotp.viewmodel.OtpListViewModel
  9. class OtpListAdapter(private val owner: FragmentActivity, private val viewModel: OtpListViewModel) : RecyclerView.Adapter<OtpListAdapter.OtpViewHolder>() {
  10. class OtpViewHolder(val binding: ItemOtpBinding) : RecyclerView.ViewHolder(binding.root)
  11. init {
  12. viewModel.addObserver(object : OtpListViewModel.AccountObserver {
  13. override fun accountAdded(position: Int) = notifyItemInserted(position)
  14. override fun accountRemoved(position: Int) = notifyItemRemoved(position)
  15. })
  16. }
  17. override fun getItemCount() = viewModel.numberOfAccounts
  18. override fun onCreateViewHolder(parent: ViewGroup, itemType: Int) = OtpViewHolder(inflateWithBinding(parent)).also { it.binding.setLifecycleOwner(owner) }
  19. override fun onBindViewHolder(viewHolder: OtpViewHolder, position: Int) {
  20. viewHolder.binding.viewmodel = viewModel.getViewModelForAccount(position)
  21. }
  22. private fun inflateWithBinding(parent: ViewGroup) = DataBindingUtil.inflate<ItemOtpBinding>(LayoutInflater.from(parent.context), R.layout.item_otp, parent, false)
  23. }