This commit is contained in:
andrew
2023-05-22 22:20:52 +09:30
parent 76466e57de
commit 8b39c4e56a
5 changed files with 57 additions and 34 deletions

View File

@@ -32,6 +32,12 @@ class BlockedContactsAdapter(val viewModel: BlockedContactsViewModel) : ListAdap
holder.bind(selectable, viewModel::toggle)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int, payloads: MutableList<Any>) {
val selectable = getItem(position)
if (payloads.isEmpty()) holder.bind(selectable, viewModel::toggle)
else holder.select(selectable.isSelected)
}
override fun onViewRecycled(holder: ViewHolder) {
super.onViewRecycled(holder)
holder.binding.profilePictureView.root.recycle()
@@ -51,5 +57,9 @@ class BlockedContactsAdapter(val viewModel: BlockedContactsViewModel) : ListAdap
binding.root.setOnClickListener { toggle(selectable) }
binding.selectButton.isSelected = selectable.isSelected
}
fun select(isSelected: Boolean) {
binding.selectButton.isSelected = isSelected
}
}
}

View File

@@ -104,7 +104,7 @@ class BlockedContactsViewModel @Inject constructor(private val storage: Storage)
fun toggle(selectable: SelectableItem<Recipient>) {
_state.value = state.run {
if (selectable.isSelected) copy(selectedItems = selectedItems - selectable.item)
if (selectable.item in selectedItems) copy(selectedItems = selectedItems - selectable.item)
else copy(selectedItems = selectedItems + selectable.item)
}
}