Kt写法缩略版
函数思维模式
//使用在RV的adapter中的回调里面
//初始化创建匿名接口 回调
private var mListener: ((a: Int, b: String) -> Unit)? = null
//.....
fun setOnItemClickListener(mListener: (position: Int, item: String) -> Unit) {
this.mListener = mListener
}
//调匿名回调接口赋值
mListener?.invoke(data, position.toString())
//用
mineFragmentRvAdapter?.setOnItemClickListener2 { position, item ->
showToast("$position ==== $item")
}
**Unit**:无任何返回的类型 相当于Java的void
**invoke**:mListener?.invoke(data, position.toString()) 相当于mListener.data, position.toString()
Java 原始版
//创建用于回调接口
interface OnItemClickListener {
fun onItemClick(obj: Any?, position: Int)
}
//初始化
private var mItemClickListener: OnItemClickListener? = null
//方法调用
fun setOnItemClickListener(itemClickListener: OnItemClickListener) {
this.mItemClickListener = itemClickListener
}
//赋值
mItemClickListener.onItemClick(mData[position], position)
//回调调用
mineFragmentRvAdapter?.setOnItemClickListener(object : OnItemClickListener {
override fun onItemClick(obj: Any?, position: Int) {
showToast("$position ==== $obj")
}
});
**Any**:所有没有显式声明基类的class,它的默认父类就是Any;相当于Java中的Object
**object **:object的作用是调用内部匿名类