安卓開發基礎——使用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加載網頁
- 原汁原味的安卓文件存儲(數據存儲系列)