kotlin中的添加一个新增功能搭配lisntener使用与个人理解

152 阅读1分钟

由于工作需要第一次接触安卓与kotlin写法,此文章更多是个人一个记录,大佬请多指点勿喷.

//    1.新增分类(单独书写一个kotlin页面)
fun insert(item: CategoryData) {
    val db = mHelper.writableDatabase
    val value = ContentValues().apply {
        put("id", item.id)
        put("name", item.name)
    }

    db.insert(tableName, null, value)
}
//   2.定义数据结构(单独书写一个kotlin页面)
package com.doc.doc.bean

data class CategoryData(
    val id: String,
    val name: String
)
// 3.新增分类按钮点击事件(由于是在弹出框dialog中点击加入所以调用diaolog弹窗)
//主页面:
viewBinding.tvTest.setOnClickListener {
    println("点击了")
    val dialog = AddCategoryDialog()
    getActivity()?.let { it1 -> dialog.show(it1.supportFragmentManager, null) }//点击调用dialog
    // (3).调用 dialog.setDialogListener进行监听如果添加成功就刷新目录
    dialog.setDialogListener(object : AddCategoryDialog.OnDialogListener {
        override fun onSaveSuccess() {
            findCategory()
        }
    })
}
//  (1).设置监听(dialog页面)
private var dialogListener: OnDialogListener? = null

interface OnDialogListener {
    fun onSaveSuccess()
}

fun setDialogListener(itemListener: OnDialogListener) {
    this.dialogListener = itemListener
}
//  dialog页面中的取消与确定按钮
private fun initView() {
    // 取消按钮
    binding.btnCancel.setOnClickListener {
        println("点击取消,123")
        dismiss()
    }

    // 确认新增按钮
    binding.btnUpload.setOnClickListener {
        add()
    }
}
//    确认新增按钮调用的函数
private fun add() {
    // 思路:1.确定数据结构
    //     2.调用准备的接口
    //     3.传入相对应的字段
    //     4.添加到目录列表成功并刷新目录列表
    val editText = binding.editText.text.toString()//拿到输入内容
    val row = CategoryData(
        //赋值给CategoryData需要的字段
        id = CommonUtils.generateId(),
        name = editText,
    )
    println(row)
    try {
        val cateGoryDao = CategoryDao()//初始化CategoryDao
        cateGoryDao.insert(row)//调用CategoryDao中的insert方法
        //  (2).调用监听方法---此处是监听第二步,第三步在主页面监听刷新写在上面
        dialogListener?.onSaveSuccess()
        dismiss()//关闭弹窗
    } catch (e: Exception) {
        e.printStackTrace()
    }
}