How I can use callback in Kotlin?

后端 未结 7 2188
Happy的楠姐
Happy的楠姐 2020-12-13 04:05

I have View and one CircleShape , which should show toast in this View. And I use it in main Activity. This is my interface

interface OnClickListenerInterfa         


        
7条回答
  •  盖世英雄少女心
    2020-12-13 04:18

    On CircleShape.kt.

    private listener OnClickListenerInterface? = null
    ...
    fun setOnClickListener(listener: OnClickListenerInterface){
        this.listener = listener
    }
    

    On your Activity

    mCircleShape.setOnClickListener(object: CircleShape.OnClickListenerInterface {
        override fun onClick(){ // Do something here
        }
    }
    

    If you're gonna use lambda expression, you can use a Function Type. Here how it looks like on CirclesShapt.kt

    fun setOnClickListener(listener: () -> Unit){
       listener() // or you could use optional if the lister is nullable "listener?.invoke()"
    }
    

    So in activity looks like.

    mCircleShape.setOnClickListener {
      // Do something here
    }
    

提交回复
热议问题