liangjingkanji / BRV

[使用文档] Android 快速构建 RecyclerView, 比 BRVAH 更简单强大
http://liangjingkanji.github.io/BRV/
MIT License
2.51k stars 317 forks source link

选择模式下,删除item后数据错乱问题 #307

Closed maydaynicko closed 1 year ago

maydaynicko commented 1 year ago

选择模式下,我选择某项进行删除操作 ,刷新列表后导致下一项无法点击,感觉是数据错乱了,代码如下

mBinding.recyclerView.linear().setup {
            if (type == 1) {
                addType<User> { R.layout.room_dialog_mic_queue_user_item }
            } else {
                singleMode = true
                addType<User> { R.layout.room_dialog_mic_queue_manager_item }
                onChecked { position, isChecked, allChecked ->
                    val model = getModel<User>(position)
                    model.isChecked = isChecked
                    model.notifyChange()
                }
                onClick(R.id.iv_checkbox) {
                    val checked = (getModel() as User).isChecked
                    setChecked(modelPosition, !checked)
                }
                onClick(R.id.iv_delete) {
                    val model = getModel<User>()
                    val position = modelPosition
                    if (model.isChecked) {
                        mutable.removeAt(position)
                        bindingAdapter?.notifyItemRemoved(position)
                    } else {
                        ToastUtils.showShort("大哥你要删除谁啊")
                    }

                }
            }
            onBind {
                val imageView = findView<ImageView>(R.id.iv_avatar)
                imageView.loadWithCircle("https://tvax1.sinaimg.cn/crop.0.0.1002.1002.180/5f808b33ly8fmxu8qbr0cj20ru0ruwg4.jpg?KID=imgbed,tva&Expires=1670409841&ssig=naSU35Ss35")
            }

        }.models = data
liangjingkanji commented 1 year ago

删除以后调用BindingAdapter.checkedPosition.clear()删除已选中位置集合, 避免单选问题

maydaynicko commented 1 year ago

BindingAdapter.checkedPosition.clear() 可以了 完美