美文网首页
Kotlin中一行代码搞定RecyclerView Adapte

Kotlin中一行代码搞定RecyclerView Adapte

作者: 小耗子_20da | 来源:发表于2021-10-08 15:29 被阅读0次

    准备工作

    1、添加依赖

    在settings.gradle 文件中添加

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

    在app/build.gradle文件中添加

    implementation 'com.github.xiaohaozi9825:adapter_plus:3.01.00'
    
    2、创建一个工具类

    AdapterUtil.kt

    inline fun <reified VDB : ViewDataBinding, reified D> adapter(noinline bind: (binding: VDB, data: D?) -> Unit) =
        object : SimpleAdapter<VDB, D>() {
            override fun onBindViewHolder(holder: ViewHolder<VDB>, position: Int, binding: VDB, data: D?, checkIndex: Int) {
                bind.invoke(binding, data)
            }
        }
    

    数据类和布局文件

    1、创建一个数据类
    data class UserInfo(val name: String, val headPortrait: String, val ana: String)
    
    2、编写布局文件

    item_user.xml

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <data>
            <variable
                name="user"
                type="pw.xiaohaozi.adapter.info.UserInfo" />
        </data>
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:paddingTop="8dp"
            android:paddingBottom="8dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/iv_head_portrait"
                android:layout_width="64dp"
                android:layout_height="64dp"
                android:layout_margin="8dp"
                circle_src="@{user.headPortrait}"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="8dp"
                android:text="@{user.name  }"
                tools:text="马云"
                android:textColor="@android:color/black"
                android:textSize="18sp"
                android:textStyle="bold"
                app:layout_constraintLeft_toRightOf="@id/iv_head_portrait"
                app:layout_constraintTop_toTopOf="parent" />
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="8dp"
                android:text="@{user.ana }"
                tools:text="我对钱没兴趣"
                android:textSize="14sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintLeft_toRightOf="@id/iv_head_portrait" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    </layout>
    

    Adapter 创建与使用

    1、创建adapter实例,并绑定数据

    \color{red}{没错,就这行代码就实现了adapter实例的创建与数据绑定}

    val adapter = adapter<ItemUserBinding, UserInfo> { binding, data -> binding.user = data }
    
    2、Adapter的使用
    • item点击事件
    adapter.setOnItemClickListener { v, vdb, position ->  }
    
    • item长按事件
    adapter.setOnItemLongClickListener { v, vdb, position ->  }
    
    • adapter 修改数据
    //模拟数据
    val list = arrayListOf<UserInfo>(
        //···
    )
    adapter.refresh(list)
    

    相关文章

      网友评论

          本文标题:Kotlin中一行代码搞定RecyclerView Adapte

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