在kotlin上等效实现Java接口 [英] equivalent implementing java interface on kotlin

查看:56
本文介绍了在kotlin上等效实现Java接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Kotlin的新手,我想知道如何在kotlin上实现Java接口,我在android上使用它,

I'm newbie in Kotlin and i'm trying to know how can i implementing java interface on kotlin, i'm using that on android,

public interface OnClickedItemListener {
    void onClick(boolean state);
}

OnClickedItemListener是我要实现的自定义接口,在kotlin中,我有此类:

OnClickedItemListener is my custom interface which i want to implementing that, in kotlin i have this class:

class MyProgressView : RelativeLayout {
    constructor(context: Context?) : super(context) {
        init()
    }

    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
        init()
    }

    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
        init()
    }

    private fun init() {
        LayoutInflater.from(context).inflate(R.layout.download_progress_layout, this)
        cusotmView.setOnClickListener {
        }
    }
}

例如,这相当于此编码:

in that whats equivalent this cods for example:

class MyProgressView : RelativeLayout {
    constructor(context: Context?) : super(context) {
        init()
    }

    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
        init()
    }

    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
        init()
    }

    private fun init() {
        LayoutInflater.from(context).inflate(R.layout.download_progress_layout, this)
        cusotmView.setOnClickListener {
            /*
            if(onitemClickListener!=null) onitemClickListener.onClick()
            */
        }
    }

    /*
    public interface OnitemClickListener{
        void onClick();
    }

    public static void setOnitemClickListener(OnitemClickListener listener){
        onitemClickListener = l;
    }
    */

}

推荐答案

在活动"中使用 setOnClickItemListener .

class MyProgressView : RelativeLayout, OnClickedItemListener  {

    var onClickItemListener: OnClickedItemListener? = null

    constructor(context: Context?) : super(context) {
        init()
    }

    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
        init()
    }

    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
        init()
    }

    private fun init() {
        LayoutInflater.from(context).inflate(R.layout.download_progress_layout, this)
    }

    override fun onClick(state: Boolean) {
        //do something on onclick
    }

    fun setOnClickedItemListener(onclickItemListener: OnClickedItemListener) {
        this.onClickItemListener = onclickItemListener
    }

}

希望这对您有所帮助.

这篇关于在kotlin上等效实现Java接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆