Kotlin 与RecycleView

简介

开始时我是用了下面的方式声明接口来做回调的,这么写是没问题的,用法也和Java里面一样,但是写完之后一想,这是Java的写法,难道Kotlin就没有自己的一套写法了?后来我又看了官方文档和一些资料,终于又被我找到它的一套写法。

**普通接口方式 **

interface IOnClickListener {
   operator fun invoke(position: Int)
}

好了,话不多说,下面的语法就是Kotlin型的Adapter,这也是我自己多次尝试和摸索出来的,应该也有其他的写法,就没有去尝试了。欢迎大家去尝试和发现,如果找到更好的写法,记得给我留个言啊= ̄ω ̄=

class KotlinRecycleViewAdapter(var context: Context, var onClickListener: ((pos: Int,type:Int) -> Unit),var onItemClickListener: (pos: Int,type: Int) -> Unit) : RecyclerView.Adapter() {

private var mList=listOf()

fun appendList(list:List) {
  mList= list;
}

override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): KotlinHolder {
  return KotlinHolder(View.inflate(context,R.layout.recycle_item_view, null),onClickListener,onItemClickListener)
}

override funonBindViewHolder(holder: KotlinHolder,position: Int) {
  holder.bindProductBean(mList[position],position)
}

//可以省略(:Int)
override fungetItemCount()=mList.size

classKotlinHolder(itemView: View, var onClickListener: (pos: Int,type: Int) -> Unit,var onItemClickListener: (pos: Int,type: Int) -> Unit) : RecyclerView.ViewHolder(itemView) {
fun bindProductBean(product: ProdctBean,position: Int) {
  with(product){
    itemView.iv.setBackgroundResource(icon)
    itemView.tv.text=name
    //两种不同的写法
    iv.setBackgroundResource(icon)//iv.setBackgroundResource(product.icon)
    tv.text = name;//tv.text=product.name
    itemView.setOnClickListener{onItemClickListener(position,position)}
    itemView.iv.setOnClickListener{onClickListener(position,position)}
   }
  }
  }
}

好了,Adapter写完了,那咱们是不是就要用它了。

val adapter= KotlinRecycleViewAdapter(this,{
//下面吐司用的是字符串模板(kotlin自带的语法糖)
//我是为了测试各种回调有没有用的,没有加入真正的逻辑
//实际项目项目中小伙伴们可以根据自己的需求添加逻辑
//这里使用的是Lambda表达式的语法
pos,type->toast("pos--->$pos--->type--->$type")
},{
pos,type->toast("pos--->$pos--->type--->$type")
})
adapter.appendList(list)
recycleView.adapter=adapter

好了,这就写完了,这就是Kotlin样式的Adapter和它的用法。哈哈,码完收工。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,131评论 25 708
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,891评论 9 118
  • Kotlin系统化学习-20170823文章中有大部分内容是借鉴《Kotlin实战》中文版,特此注明一下。 Kot...
    ChenHaHa哈哈阅读 1,916评论 2 10
  • 2017年11月3日 晴天但有风且冷 “朋友”这个词究竟该如何定义呢?究竟是懂你的才是朋友,还是默默的支持...
    面条的面阅读 210评论 0 0
  • 静止,停下脚步 回顾,所得与失去 朝阳依旧,黄昏陪伴 日复终究还是有一日 叹息,是怅然若失已然留下的脚步声 昨日即...
    左手丶右手阅读 601评论 0 1

友情链接更多精彩内容