You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于mikepenz/fastAdapter搭建示例RecyclerView?求指导与代码

别发愁!我来一步步带你用fastAdapter搭建一个基础的RecyclerView示例,全程不用你没接触过的ButterKnife,用ViewBinding或者原生的findViewById就能搞定~

快速上手fastAdapter搭建RecyclerView

1. 先添加必要依赖

在你的Module级别的build.gradle(或者build.gradle.kts)文件中,添加fastAdapter和RecyclerView的依赖:

// RecyclerView 基础依赖
implementation "androidx.recyclerview:recyclerview:1.3.2"
// fastAdapter 核心库(建议用最新版本号)
implementation "com.mikepenz:fastadapter:5.7.0"
// 如果用ViewBinding的话,记得在android块里开启:
android {
    ...
    buildFeatures {
        viewBinding true
    }
}

2. 创建自定义Item类

fastAdapter的核心是Item类,每个列表项对应一个Item。我们写一个简单的SimpleListItem,继承自AbstractItem,完全不用ButterKnife,用ViewBinding来绑定布局:

import com.mikepenz.fastadapter.items.AbstractItem
import android.view.ViewGroup
import android.view.LayoutInflater
import com.yourpackage.databinding.ItemSimpleBinding // 替换成你的布局Binding类

class SimpleListItem(
    val itemId: Long,
    val title: String
) : AbstractItem<SimpleListItem.ViewHolder>() {

    // 每个Item的唯一类型标识
    override val type: Int get() = R.id.simple_list_item

    // 返回Item对应的布局文件ID
    override val layoutRes: Int get() = R.layout.item_simple

    // 创建ViewHolder
    override fun createViewHolder(parent: ViewGroup): ViewHolder {
        val binding = ItemSimpleBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return ViewHolder(binding)
    }

    // 绑定数据到ViewHolder
    override fun bindView(holder: ViewHolder, payloads: List<Any>) {
        super.bindView(holder, payloads)
        holder.binding.tvTitle.text = title
    }

    // ViewHolder类,用ViewBinding持有布局控件
    class ViewHolder(val binding: ItemSimpleBinding) : com.mikepenz.fastadapter.binding.BindingViewHolder<ItemSimpleBinding>(binding.root)
}

对应的布局文件item_simple.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:textSize="18sp"/>

3. 在Activity中配置RecyclerView

接下来在你的Activity里初始化RecyclerView,把fastAdapter整合进去:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.mikepenz.fastadapter.FastAdapter
import com.mikepenz.fastadapter.adapters.ItemAdapter
import com.yourpackage.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // 1. 配置RecyclerView的LayoutManager
        binding.recyclerView.layoutManager = LinearLayoutManager(this)

        // 2. 创建ItemAdapter,用于管理我们的列表数据
        val itemAdapter = ItemAdapter<SimpleListItem>()

        // 3. 创建FastAdapter,把ItemAdapter关联进去
        val fastAdapter = FastAdapter.with(itemAdapter)

        // 4. 生成测试数据
        val testItems = mutableListOf<SimpleListItem>().apply {
            repeat(20) {
                add(SimpleListItem(it.toLong(), "列表项 $it"))
            }
        }

        // 5. 把数据添加到ItemAdapter
        itemAdapter.add(testItems)

        // 6. 把FastAdapter设置给RecyclerView
        binding.recyclerView.adapter = fastAdapter

        // 可选:添加点击事件
        fastAdapter.onClickListener = { _, _, item, _ ->
            // 在这里处理Item点击逻辑,比如弹出Toast
            true // 返回true表示事件已处理
        }
    }
}

对应的Activity布局activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

关键说明

  • 全程没有用到ButterKnife,用ViewBinding替代了控件绑定,这也是现在Android开发的推荐方式
  • ItemAdapter负责管理数据集合,FastAdapter负责处理RecyclerView的适配、点击事件、动画等核心逻辑
  • 如果不想用ViewBinding,也可以换成findViewById,只需要修改ViewHolder的创建和绑定逻辑就行

这样跑起来就能看到一个带20个列表项的RecyclerView啦,点击事件也已经配置好,你可以根据自己的需求扩展数据模型和布局~

内容的提问来源于stack exchange,提问作者Stein.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:02:31