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. 多于一个方法时:
==================================================
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() {
}
})
==================================================
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 {
}
}