Kotlin 之 匿名接口 回调
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的作用是调用内部匿名类