android开发分享Kotlin 接口回调示例

1. 只有一个方法时://接口定义:private var onDeleteListener: ((String) -> Unit)? = null fun setOnDeleteListener(onDeleteListener: ((String) -> Unit)) { this.onDeleteListener = onDeleteListener } // 使用onDeleteListener?.invoke(“delete”)


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

(0)
上一篇 2021年10月20日
下一篇 2021年10月20日

精彩推荐