安卓开发基础——使用RecyclerView
theme: fancy
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情
前言
本篇我们继续回归新手基础知识点,当然,RecyclerView控件是安卓开发中非常重要的,之前的文章也聊到过一些第三方库将其封装变得更好用,但是言归正传,我们首先得学会官方版本的,下面我们就来看看如何使用它。
正篇
RecyclerView是作为一个增强版的ListView,提供了更为强大的滑动列表效果。
使用方法
首先我们需要导入库,所以要在项目的build.gradle(.../app/build.gradle)中添加RecyclerView库依赖,目前版本已经到1.2.1,如果后续版本落后,AS会提示你去升级:
Gradle
implementation 'androidx.recyclerview:recyclerview:1.2.1'
在我们点击Sync同步好Gradle后就能开始使用RecyclerView了。
第一步
我们先在XML布局使用RecyclerView控件:
XML
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/vRecyclerView"
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
第二步
定义一个实体类,作为列表适配器的适配类型:
Kotlin
class Test(val name:String, val testId: Int)
再去定义它的对应布局(列表子项布局),在layout文件夹下创建一个test_item.XML:
```XML
<TextView
android:id="@+id/vTestName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="10dp"/>
```
第三步
我们需要新建一个类作为RecyclerView的适配器,并且让这个新建类继承自RecyclerView.Adapter,我们再将这个新建类里定义一个内部类ViewHolder,最后将泛型指定为这个新建类.ViewHolder,以及重写实现三个必要的方法:
```Kotlin package com.example.myapplication
import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView
class TestAdapter(val testList: List
//布局构建,构造函数,返回ViewHolder实例
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.test_item, parent, false)
return ViewHolder(view)
}
//对RecyclerView子项数据赋值,会在每个子项被滚动到屏幕内执行
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val test = testList[position]
holder.testImageId.setImageResource(test.testImageId)
holder.testName.text = test.name
}
//获取RecyclerView子项数量
override fun getItemCount() = testList.size
} ```
第四步
上面操作完成,我们就能在Activity中使用RecyclerView:
设置全局变量列表参数:
Kotlin
private val testList = ArrayList<Test>()
写初始化列表数据函数:
```Kotlin
private fun initTests() {
repeat(2) {
testList.add(Test("test1", R.mipmap.rabbit))
testList.add(Test("test2", R.mipmap.ic_more))
}
}
正式绑定到RecyclerView使用:
Kotlin
//初始化测试数据
initTests()
val layoutManager = LinearLayoutManager(this)
binding.vRecyclerView.layoutManager = layoutManager
val adapter = TestAdapter(testList)
binding.vRecyclerView.adapter = adapter
这里提一下,LayoutManager是用于指定RecyclerView布局方式的,如果想横向实现列表需要在layoutManager参数实现后加一句:
Kotlin
layoutManager.orientation = LinearLayoutManager.HORIZONTAL
```
当然,你的子项布局test_item也最好调整一下,适配一下横向排列。
此外,我们的RecyclerView点击事件是在我们的适配器TestAdapter中的onCreateViewHolder方法中去注册的。
总结
这一块知识点当初刚学的时候是比较麻烦的,但在工作中用着用着就熟悉了,加上有之前文章介绍的好用的第三方库支持:强大而灵活的RecyclerView Adapter——BRVAH(框架引入与BaseQuickAdapter使用篇) - 掘金 (juejin.cn) 、新年兔兔送祝福——SearchRabbit(安卓app) - 掘金 (juejin.cn),所以到后面还是能用起来得心应手的。
- 安卓开发一年技术小结——安卓开发技术整理
- 安卓Kotlin开发学习——接着看高阶函数
- 兔兔按钮——安卓悬浮按钮
- 兔兔进度条Plus——SeekBar充当Progress
- 安卓基础开发——ReentrantLock的简单使用
- 安卓开发基础——使用RecyclerView
- 安卓开发基础(Java)——TextView的使用
- 安卓开发基础——弱引用的使用
- 安卓开发基础——实现音频文件的播放
- 让UI忙碌的安卓Lottie动画渲染库(二)
- 强大而灵活的RecyclerView Adapter——BRVAH(框架引入与BaseQuickAdapter使用篇)
- 安卓语言基础之Kotlin的面向对象编程
- 安卓语言基础之Kotlin高阶函数——Lambda表达式(二)
- 大放光彩的安卓Jetpack组件-ViewModel(一)
- 安卓语言基础之Kotlin高阶函数——Lambda表达式(一)
- 安卓开发必备——build.gradle文件初探(一)
- 安卓开发学Flutter——Dart语法的一些注意点(第二篇)
- 简单易用的安卓SharedPreferences存储(数据存储系列)
- 安卓开发基础技术——WebView加载网页
- 原汁原味的安卓文件存储(数据存储系列)