1. 只有一个方法时:
//接口定义: private var onDeleteListener: ((String) -> Unit)? = null fun setOnDeleteListener(onDeleteListener: ((String) -> Unit)) { this.onDeleteListener = onDeleteListener } // 使用 onDeleteListener?.invoke("delete") //外部使用: deleteDialog.setOnDeleteListener { Log.e("1111", "setOnDeleteListener:$it") }
2. 多于一个方法时:
================================================== //仿java写法 interface DialogListener { fun dismiss() fun confirm() } private var dialogListener : DialogListener ? = null fun setDialogListener(dialogListener: DialogListener){ this.dialogListener = dialogListener } //使用 dialogListener ?.confirm() dialogListener ?.dismiss() //外部调用 dialog.setDialogListener(object : UnplacedDialog.DialogListener { override fun dismiss() { } override fun confirm() { } }) ================================================== //Kotlin写法(DSL) inner class ListenerBuilder { internal var dismissAction: (() -> Unit)? = null internal var confirmAction: (() -> Unit)? = null fun dismiss(action: () -> Unit) { dismissAction = action } fun confirm(action: () -> Unit) { confirmAction = action } } private var mListener: ListenerBuilder? = null fun addUDialogListener(listenerBuilder: ListenerBuilder.() -> Unit) { mListener = ListenerBuilder().also(listenerBuilder) } //使用 mListener?.confirmAction?.invoke() mListener?.dismissAction?.invoke() //外部调用 dialog.addDialogListener { dismiss { } confirm { } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/addevelopment/892889.html