美文网首页Android开发Android技术知识Android开发经验谈
Kotlin封装的Recyclerview的通用adapter,

Kotlin封装的Recyclerview的通用adapter,

作者: 乐活新心 | 来源:发表于2019-08-02 19:48 被阅读6次


Kotlin封装的Recyclerview的两种通用adapter

1. KtBaseAdapter:普通的通用Adapter

2. KtDBBaseAdapter:结合DataBinding的通用Adapter,使用了binding的好处是,可以不用自定义Adapter了。

这两种Adapter都是只能展示单一数据类型,也就是一种布局,请大家注意哈

 软件目前最新版本

2.1.5

 安装教程

1.引包

第一步:添加jitpack地址

在工程下的build.gradle文件中添加:

allprojects {

    repositories {

        jcenter()

        maven { url 'https://jitpack.io' }

    }

}

第二步:添加依赖

在module的build.gradle文件中添加依赖(把Tag换成最新版本):

dependencies {

  implementation 'com.github.wufengfeilong:KtBaseAdapter:tag'

}

 使用说明之KtBaseAdapter:普通的通用Adapter

1. 自定义一个Adapter,继承自KtBaseAdapter:为了把数据填充到Adapter中

class MyAdapter: KtBaseAdapter<UserInfo>{

        constructor(mList: List<UserInfo>?, mLayoutId: Int?) : super(mList, mLayoutId)

        // 重写convert方法,用来将数据填充到每个item view中

        override fun convert(itemView : View?, item: UserInfo) {

            itemView!!.photo_iv.setImageResource(R.drawable.using)

            itemView!!.textView.text = item.name

            // 设置item中控件的点击事件(如果不需要可以不做这一步)

            itemView!!.button

                .setOnClickListener { Toast.makeText(itemView.context, "click:" + item.name, Toast.LENGTH_SHORT).show() }

        }

    }

2. 创建自定义Adapter,将数据源和布局文件作为参数传进去

val mAdapter = MyAdapter(mList, R.layout.list_item)

rv.adapter = mAdapter

3. 设置item view的点击事件(非必需)

mAdapter!!.setItemClickListener(object : KtBaseAdapter.ItemClick {

            override fun OnItemClick(v: View, position: Int) {

                Toast.makeText(this@MainActivity, "click$position", Toast.LENGTH_SHORT).show()

            }

        })

4. 更新数据

mAdapter.updateData(mList)

使用说明之KtDBBaseAdapter:结合DataBinding的通用Adapter

使用了DataBinding后就不用自定义Adapter了,除非你想添加item里面的控件的点击事件

1.创建Adapter方式:

- 如果不需要item里面控件的点击事件可以直接用KtDBBaseAdapter

val mAdapter = KtDBBaseAdapter(mList, R.layout.db_list_item,BR.userInfo)

rv.adapter = mAdapter

就这两句话就搞定了,前提是已经在item的布局中将binding和数据绑定好

- 需要item里面控件的点击事件可以自定义Adapter,,继承自KtDBBaseAdapter:这个目的仅仅是为了完成item中控件的点击事件

class MyAdapter:KtDBBaseAdapter<UserInfo>{

        constructor(mList: List<UserInfo>?, layoutId: Int?, brId: Int?) : super(mList, layoutId, brId)

        override fun convert(itemView: View?, item: UserInfo) {

            // 控件中的点击事件设置

            itemView!!.button

                .setOnClickListener { Toast.makeText(itemView.context, "click:" + item.name, Toast.LENGTH_SHORT).show() }

        }

    }

val mAdapter = MyAdapter(mList, R.layout.db_list_item,BR.userInfo)

2. 设置Adapter

rv.adapter = mAdapter

3. 设置item view的点击事件(非必需)

mAdapter!!.setItemClickListener(object : KtBaseAdapter.ItemClick {

            override fun OnItemClick(v: View, position: Int) {

                Toast.makeText(this@MainActivity, "click$position", Toast.LENGTH_SHORT).show()

            }

        })

4. 更新数据

mAdapter.updateData(mList)

好了,以上就是这两种通用Adapter的使用方法,是不是很简单呢?当然,上面只是Kotlin的用法,Java用法也差不多,步骤是一样的,就是写法稍微有点差别,并不难。

Kotlin之通用Adapter Github地址

相关文章

网友评论

    本文标题:Kotlin封装的Recyclerview的通用adapter,

    本文链接:https://www.haomeiwen.com/subject/endrdctx.html