前言
在体验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