Android kotlin 学习记录3 GridView添加删除数据

先上效果

 先声明一下用到的变量

private lateinit var moreSafeFaceDialog: MoreSafeFaceDialog
private lateinit var otherFaceNameDialog: MoreFaceNameDialog
private lateinit var listViewAdapter: SafeFaceAdapter<ItemSafeFaceBinding, UserFaceBean>
private var userFaceData = ObservableArrayList<UserFaceBean>()
private val userBox = ObjectBox.store.boxFor(UserFace::class.java)

UserFace是我们创建的工具类,存放声明我们用到的变量

@Entity
data class UserFace(
    @Id
    var id: Long = 0,
    var name: String,
    var age: Int = 0,
    var sex: Int = 0,
    var face: String? = null,
    var type: Int = 0,
    var stat: Int = 0
)

UserFaceBean是一个bean类

 binding.faceList.adapter = listViewAdapter
        binding.faceList.setOnItemClickListener { adapterView, view, i, l ->
            if (i == 0) {
                showFaceDataDialog()
            } else {

            }
        }

因为 我把添加按钮放在第一位所以设置点击item效果

private fun showFaceDataDialog() {
    if (!this::moreSafeFaceDialog.isInitialized) {
        moreSafeFaceDialog = MoreSafeFaceDialog(requireContext(), object :
            DialogListener<String> {
            override fun onDialogConfirm(position: Int, value: String) {
                if (position == 8) {
                    showDialog()
                    var relate = SPUtils.getInstance().getString(SPKey.OTHER_NAME)
                    userFaceData.add(
                        UserFaceBean(
                            0,
                            relate.toString(),
                            "",
                            R.mipmap.face,
                            0
                        )
                    )
                    listViewAdapter.notifyDataSetChanged()
                } else {
                    userBox.put(UserFace(0, value, 0, 0, "", R.mipmap.face, 0))
                    loadUserFaceData()
                }
            }
        })
    }
    moreSafeFaceDialog.show()
}

因为最后一个是其他,这边设置的效果是弹出弹框自定义

binding.faceList.setOnItemLongClickListener { adapterView, view, i, l ->
    if (i > 0) {
        ConfirmDialog(requireContext(), "提示", "是否删除该数据?", object :
            DialogListener<String> {
            override fun onDialogConfirm(position: Int, value: String) {
                userBox.remove(userFaceData[i].id)
                loadUserFaceData()
            }
        }).show()
    }
    return@setOnItemLongClickListener true
}
loadUserFaceData()
}

这里是设置item的长按效果,弹出弹窗提示

private fun loadUserFaceData() {
    userFaceData.clear()
    userFaceData.add(UserFaceBean(0, "添加", "", R.mipmap.add_face, 0))
    for (u in userBox.all) {
        userFaceData.add(UserFaceBean(u.id, u.name, u.face, u.type, u.stat))
    }
    listViewAdapter.notifyDataSetChanged()
}

最后加载数据,首先添加第一个数据,作为添加按钮

 SPUtils是用来存储数据的Util类,可以直接调用里面的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值