Fix item movement issue

This commit is contained in:
tanvirahmod 2021-01-21 17:17:47 +06:00
parent 3fa9bebcb2
commit e6e1df7563

@ -60,8 +60,8 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList<Checkl
}
when (id) {
R.id.cab_move_to_top -> moveSelectedItems(true)
R.id.cab_move_to_bottom -> moveSelectedItems(false)
R.id.cab_move_to_top -> moveSelectedItemsToTop()
R.id.cab_move_to_bottom -> moveSelectedItemsToBottom()
R.id.cab_rename -> renameChecklistItem()
R.id.cab_delete -> deleteSelection()
}
@ -147,16 +147,26 @@ class ChecklistAdapter(activity: BaseSimpleActivity, var items: ArrayList<Checkl
}
}
private fun moveSelectedItems(isMoveToTop: Boolean) {
private fun moveSelectedItemsToTop() {
selectedKeys.withIndex()
.reversed()
.forEach { keys ->
val position = items.indexOfFirst { it.id == keys.value }
val tempItem = items[position]
items.removeAt(position)
items.add(0, tempItem)
}
notifyDataSetChanged()
listener?.saveChecklist()
}
private fun moveSelectedItemsToBottom() {
selectedKeys.withIndex()
.forEach { keys ->
val position = items.indexOfFirst { it.id == keys.value }
val tempItem = items[position]
items.remove(tempItem)
if (isMoveToTop)
items.add(0, tempItem)
else
items.add(items.size, tempItem)
items.removeAt(position)
items.add(items.size, tempItem)
}
notifyDataSetChanged()
listener?.saveChecklist()