Kotlin开发 使用lambda实现接口回调

前言

  在体验kotlin后,你一定会kotlin实现一些简单的接口回调方法的lambda印象深刻。例如下面的代码:

        val button = Button(this)
        button.setOnClickListener { 
            //在此处实现点击逻辑
        }

这大大的减少了重复的模板代码。提高了代码的阅读效率。所以,此篇博客讲解我们如何实现这种lambda接口回调。

注意点

  lambda形式的回调,只适合有单个参数值回调的方式。多个方法的回调,还应该是Java的形式。创建接口类,创建多个接口方法。

讲解部分

代码

class MainActivity : AppCompatActivity() {
    private lateinit var listener: (String) -> Unit 

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        setOnListener { textView.text = it }

        Handler().postDelayed(Runnable {
            listener.invoke("触发成功")
        }, 1000)

    }

    fun setOnListener(str: (String) -> Unit){
        listener = str
    }
}

1.首先在创建一个延后初始化的全局变量 private lateinit var listener: (String) -> Unit

2.然后实现setOnListener方法

3.最后的重点是使用invoke发布数据,我这里使用了一个Handler模拟延迟的数据回调

End

原文地址:https://www.cnblogs.com/guanxinjing/p/13712991.html