RecyclerView 基础
使用 RecyclerView 高效显示大型列表。创建 Adapter 和 ViewHolder,并通过 ViewBinding 连接数据。
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——加载列表项 XMLonBindViewHolder——填充一个列表项的数据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 反馈 — 无需本地设置。