我是Kotlin
中的新手,我试图知道如何在kotlin上实现java界面,我在Android上使用它,
public interface OnClickedItemListener {
void onClick(boolean state);
}
OnClickedItemListener
是我想要实现的自定义界面,在kotlin我有这个类:
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 {
}
}
}
在那个等同于这个鳕鱼的例子中:
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;
}
*/
}
答案 0 :(得分:0)
在您的活动中使用 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
}
}
我希望这对你有所帮助。