Fix repeating items in recyclerview
All checks were successful
continuous-integration/drone/pr Build is passing

This commit is contained in:
davidoskky 2022-11-01 19:53:22 +01:00
parent 792950be7c
commit 6d610ed61a

View File

@ -61,9 +61,13 @@ class SourcesListAdapter(
binding.sourceTitle.text = itm.title.getHtmlDecoded() binding.sourceTitle.text = itm.title.getHtmlDecoded()
} }
override fun getItemId(position: Int) = position.toLong()
override fun getItemViewType(position: Int) = position
override fun getItemCount(): Int = items.size override fun getItemCount(): Int = items.size
inner class ViewHolder(internal val mView: ConstraintLayout) : RecyclerView.ViewHolder(mView) { inner class ViewHolder(private val mView: ConstraintLayout) : RecyclerView.ViewHolder(mView) {
init { init {
handleClickListeners() handleClickListeners()
@ -74,13 +78,13 @@ class SourcesListAdapter(
val deleteBtn: Button = mView.findViewById(R.id.deleteBtn) val deleteBtn: Button = mView.findViewById(R.id.deleteBtn)
deleteBtn.setOnClickListener { deleteBtn.setOnClickListener {
val (id) = items[adapterPosition] val (id) = items[bindingAdapterPosition]
CoroutineScope(Dispatchers.IO).launch { CoroutineScope(Dispatchers.IO).launch {
val successfullyDeletedSource = repository.deleteSource(id) val successfullyDeletedSource = repository.deleteSource(id)
if (successfullyDeletedSource) { if (successfullyDeletedSource) {
items.removeAt(adapterPosition) items.removeAt(bindingAdapterPosition)
notifyItemRemoved(adapterPosition) notifyItemRemoved(bindingAdapterPosition)
notifyItemRangeChanged(adapterPosition, itemCount) notifyItemRangeChanged(bindingAdapterPosition, itemCount)
} else { } else {
Toast.makeText( Toast.makeText(
app, app,