美文网首页
kotlinInterface

kotlinInterface

作者: 安卓_背包客 | 来源:发表于2019-06-21 10:32 被阅读0次

注:适用于回调接口单个方法

1.方法无参无返回值回调

(1)声明回调接口,以及初始化接口


private var setDataLisener: (() -> Unit)? = null

fun setDateListener(list: (() -> Unit)) {

this.setDataLisener = list

}

//(2)接口方法的调用

setDataLisener?.invoke()

//外部调用接口

adapter.setDateListener {

Toast.makeText(this@MainActivity,"请求失败",Toast.LENGTH_SHORT).show()

}

2.方法有参无返回值回调


//(1)声明回调接口,以及初始化

private var onUpdataListener: ((index: Int, str: String) -> Unit)? = null

fun setOnUpDateListener(onUpdateListener: ((index: Int, str: String) -> Unit)) {

this.onUpdataListener = onUpdateListener

}

//(2)接口方法的调用

onUpdataListener?.invoke(2, data[position])

//(3)外部调用接口

adapter.setOnUpDateListener { index, str ->

Log.e("22","=="+str)

}

3.方法有参有返回值回调


//1)接口声明,以及初始化

private var getData: ((index: Int, str: String) -> Int)? = null

fun getDataContent(mlist: (index: Int, str: String) -> Int) {

this.getData = mlist

}

//(2)接口方法调用

val invoke = getData?.invoke(position, data[position])

//(3)外部调用接口

adapter.getDataContent { index, str ->

Log.e("22",str+"")

index

}

//自定义调义,方法名字

  fun requestListener(index: Int, onSuccesss: (index:Int) -> Unit, onError: (index:Int) -> Unit) {
        //请求网络接口
        if (index  == 0) {
            onSuccesss(index)
        } else {
            onError(index)
        }
    }
  btn_one.setOnClickListener {
            val randam=Random
            val int = randam.nextInt(2)
            requestListener(int,onSuccesss = {
                Log.e("===", "onsuccess$it")
            },onError = {
                Log.e("===", "onerror$it")
            })
        }
//1)接口声明,以及初始化
 private var getData: ((index: Int, str: String) -> Int)? = null

    fun getDataContent(mlist: (index: Int, str: String) -> Int) {
        this.getData = mlist
    }
     //(2)接口方法调用
               val invoke = getData?.invoke(position, data[position])
      //(3)外部调用接口         
  adapter.getDataContent { index, str ->
            Log.e("22",str+"")
            index
        }
  //run即可作用于Any,又可作为this代码块,run返回执行的是处理结果
    fun initData(str: String?) {
        str?.run {
            var con = this.replace("2", "3")
            println(con)
        }
    }
    ```
           data.initData("123456789")
    返回    133456789
    ```

    // apply用法类似run,区别在于apply执行完成block()函数后,返回自身对象
// 返回自身对象,可以使用链式方法使用.apply{}.apply{}
    fun initPserson(str: String?): String? {
        return str?.apply {
            var con = this.replace("3", "你")
            println(con)
            println(this)
        }
    }
        ```
           12你456789
           123456789
            data.initPserson("123456789")
            println(pserson)
         返回 123456789
        ```


    // apply用法类似run,区别在于apply执行完成block()函数后,返回自身对象
// 返回自身对象,可以使用链式方法使用.apply{}.apply{}
    fun initListData(list: MutableList<String>?): MutableList<String>? {
        return list?.apply {
            this.add("小明")
            this.add("小红")
            this.add("小李")
            this.add("小米")
            this.add("小死")
        }
    }
    ```
            val pserson = data.initListData(mutableListOf())
            println(pserson)
    返回 [小明, 小红, 小李, 小米, 小死]
    ```

    //let内部使用it指代当前对象,返回最后一行处理结果, (T) -> R
    fun initOpen(str: String?): Any? {
        return str?.let {
            it.plus("22")
            it.drop(2)
        }
    }
    ```
            val pserson = data.initOpen("13452")
            println(pserson)
       返回   452
    ```
    //with函数作用于一个对象,返回最后一行处理结果
    fun initWith(str: String?):String?{
        //写法一,对象receiver和一个lambda函数块
        return  with(str,{
            "222"
        })
        //由于with函数最后一个参数是一个函数,可以把函数提到圆括号的外部修改后
        return with(str){
            "222"
        }
    }

    ```
    val pserson = data.initWith("13452")
        println(pserson)
     返回  222
    ```
      //与let函数相似,区别是also执行完成后返回对象本身,let返回处理结果
        fun initAlso(){
            var mlist= mutableListOf<String>()
            for(index in 0..20){
                mlist.add("测试"+index)
            }
            mlist.also {
                for (item in mlist){
                    println(item)
                }
            }
        }

        ```

测试0
测试1
测试2
测试3
测试4
测试5
测试6
测试7
测试8
测试9
测试10
测试11
测试12
测试13
测试14
测试15
测试16
测试17
测试18
测试19
测试20
        ```

相关文章

  • kotlinInterface

    注:适用于回调接口单个方法 1.方法无参无返回值回调 (1)声明回调接口,以及初始化接口 2.方法有参无返回值回调...

网友评论

      本文标题:kotlinInterface

      本文链接:https://www.haomeiwen.com/subject/dhneqctx.html