Android Academy · 课时

RecyclerView 基础

使用 RecyclerView 高效显示大型列表。创建 Adapter 和 ViewHolder,并通过 ViewBinding 连接数据。

第 2 / 6 课11 个步骤

RecyclerView 基础 是 CoddyKit 上的免费 Android Academy 课时。 这是第 2 节课,共 6 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 6 节课。

为什么使用 RecyclerView?

RecyclerView 是在 Android 中显示可滚动元素列表的标准方式。

与较早的 ListView 不同,RecyclerView:

  • 在滚动时回收视图——只创建足以填满屏幕的视图数量
  • 支持垂直列表、水平列表和网格
  • 通过 LayoutManagers 实现高度自定义

RecyclerView 架构

RecyclerView 需要三个部分才能工作:

  • RecyclerView——布局 XML 中的控件
  • Adapter——将数据绑定到列表项视图
  • ViewHolder——保存每个列表项内部视图的引用

Adapter 会创建 ViewHolders,并在用户滚动时将数据绑定到它们。

将 RecyclerView 添加到 XML

将控件添加到布局中,并在 build.gradle 中声明依赖:

<!-- In res/layout/activity_main.xml -->
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- app/build.gradle dependencies: -->
<!-- implementation 'androidx.recyclerview:recyclerview:1.3.2' -->

列表项布局

为每个列表项创建单独的 XML 文件。例如,res/layout/item_fruit.xml:

<!-- res/layout/item_fruit.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvCalories"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp" />

</LinearLayout>

数据模型

定义表示列表中每个元素的数据类:

data class Fruit(
    val name: String,
    val calories: Int
)

创建 Adapter

Adapter 会将数据绑定到列表项布局。它有三个关键方法:

  • onCreateViewHolder——加载列表项 XML
  • onBindViewHolder——填充一个列表项的数据
  • getItemCount——获取元素总数

Adapter 实现

一个完整且最简的 RecyclerView Adapter:

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class FruitAdapter(
    private val fruits: List<Fruit>
) : RecyclerView.Adapter<FruitAdapter.ViewHolder>() {

    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val tvName: TextView = view.findViewById(R.id.tvName)
        val tvCalories: TextView = view.findViewById(R.id.tvCalories)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_fruit, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val fruit = fruits[position]
        holder.tvName.text = fruit.name
        holder.tvCalories.text = "${fruit.calories} kcal"
    }

    override fun getItemCount() = fruits.size
}

在 Activity 中设置

在 Activity 中将 RecyclerView、Adapter 和 LayoutManager 连接起来:

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

    val fruits = listOf(
        Fruit("Apple", 95),
        Fruit("Banana", 105),
        Fruit("Cherry", 50),
        Fruit("Mango", 202)
    )

    val adapter = FruitAdapter(fruits)

    binding.recyclerView.apply {
        this.adapter = adapter
        layoutManager = LinearLayoutManager(this@MainActivity)
    }
}

GridLayoutManager

将 LayoutManager 改为网格布局,而不是单列列表:

  • LinearLayoutManager——垂直或水平列表
  • GridLayoutManager(context, spanCount)——包含 N 列的网格
  • StaggeredGridLayoutManager——类似 Pinterest 的交错网格

快速检查

ViewHolder 在 RecyclerView Adapter 中的作用是什么?

回顾:RecyclerView 基础

现在,您可以高效地显示列表:

  • RecyclerView 通过回收视图提升性能
  • 三个部分:RecyclerView 控件、Adapter、ViewHolder
  • 列表项 XML 定义一行或一张卡片的外观
  • Adapter 在 onBindViewHolder 中将数据连接到视图
  • LayoutManager 控制列表、网格或交错布局

下一步:通过点击事件让列表项可以点击。

免费开始

用 AI 导师学习 Kotlin — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
36
课程
152

常见问题解答

「RecyclerView 基础」课时是免费的吗?

是的 — 「RecyclerView 基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 6 节课。

「RecyclerView 基础」这节课中我会学到什么?

使用 RecyclerView 高效显示大型列表。创建 Adapter 和 ViewHolder,并通过 ViewBinding 连接数据。 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Android Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 6 节。

「RecyclerView 基础」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Android Academy 课中编写并运行代码吗?

能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Kotlin 集合
  2. RecyclerView 基础
  3. RecyclerView 点击事件
  4. SharedPreferences
  5. DataStore 偏好设置
  6. 适配器与 DiffUtil
← 返回 Android Academy