Kotlin 使用Lambda來設置回調(diào)的操作
使用Kotlin的Lambda表達式,我們可以拋棄回調(diào)接口的使用。只需設置希望后面會被調(diào)用的函數(shù)即可。
示例如下
新建一個Kotlin類
class MyBean {
fun testcallback1(callback: (String) -> Unit) {
callback.invoke("這是回調(diào)的內(nèi)容")
}
fun testcallback2(value1: Int, value2: Int, callback: (Int, Int) -> Int): Int {
var result = callback.invoke(value1, value2)
return result * 3
}
}
進行調(diào)用
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var bean = MyBean()
bean.testcallback1 { m -> toast(m) }
val result = bean.testcallback2(1, 2, { value1, value2 -> value1 + value2 })
toast("計算結(jié)果" + result.toString())
}
}
最后顯示的結(jié)果
testcallback1的toast顯示為: "這是回調(diào)的內(nèi)容"
testcallback2將value1和value2相加,最后再乘以3,故toast顯示為9
補充知識:kotlin 定義接口并實現(xiàn)回調(diào)
開發(fā)環(huán)境 android studio 3.0.1 已支持 kotlin
1、定義接口
interface CallBack{
fun callBack(info : String)
}
2、實現(xiàn)接口 : 為繼承\(zhòng)實現(xiàn)
class CallBacks : CallBack{
override fun callBack(info : String){
Log.d("MainApp","current info $info")
}
}
或者
private var mCallBack = object : CallBack{
override fun callBack(info : String){
Log.d("MainApp","current info $info")
}
}
3、定義帶回調(diào)方法的函數(shù)
private fun initData(callBack : CallBack):Boolean{
callBack?.callBack("我來自回調(diào)")
return true
}
4、實現(xiàn)回調(diào),調(diào)用方式與實現(xiàn)接口對應
initData(CallBacks())
或者
initData(mCallBack)
打印結(jié)果:

以上這篇Kotlin 使用Lambda來設置回調(diào)的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Android中使用LayoutInflater要注意的一些坑
LayoutInflater類在我們?nèi)粘i_發(fā)中經(jīng)常會用到,最近在使用中就遇到了一些問題,所有下面這篇文章主要給大家總結(jié)了關于Android中使用LayoutInflater要注意的一些坑,希望通過這篇能讓大家避免走一些彎路,需要的朋友可以參考學習,下面來一起看吧。2017-04-04
Android中點擊按鈕啟動另一個Activity及Activity之間傳值問題
這篇文章主要介紹了Android中點擊按鈕啟動另一個Activity及Activity之間傳值問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01
淺析Android企業(yè)級開發(fā)數(shù)據(jù)綁定技術
這篇文章通過代碼實例分析了Android企業(yè)級開發(fā)數(shù)據(jù)綁定技術的應用以及相關的原理知識,跟著小編一起學習參考下吧。2017-12-12

