Android Studio| RecycleView Adapter

Kombayar
6 min readFeb 13, 2025

--

RecycleView

RecycleView 的功能為將一筆大陣列資料,顯示出來,不需要知道資料中的數量。

藉由 RecyclerView,您可以輕鬆有效地顯示大型資料集。由您提供資料並定義每個項目的外觀,而 RecyclerView 程式庫則會在需要時動態建立元素。

顧名思義,RecyclerView 就是回收個別元素。當向下捲動螢幕而未顯示項目時,RecyclerView 並不會刪除其檢視畫面。只不過,RecyclerView 會重複使用捲動螢幕後顯示新項目的檢視畫面。RecyclerView 可改善效能和應用程式的回應速度,並降低耗電量。

以上為 Android 官方文件說明!:)

RecycleView 配置:

  1. 創建 Adapter

onCreateViewHolder(): 建立新的 ViewHolder 時,RecyclerView 都會呼叫這個方法。這個方法會建立及初始化 ViewHolder 及其相關聯的 View
onBindViewHolder(): RecyclerView 會呼叫此方法,將 ViewHolder 與資料建立關聯,並將資料填入檢視容器的版面配置。
getItemCount():RecyclerView 會呼叫此方法,取得資料集的大小。

建立 Adapter 類別時會繼 RecyclerView.Adapter<RecyclerView.ViewHolder>(),一定要覆寫上面三個函式。

class MainListAdapter(context: Context, var itemList: List<CityResponse>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val view: View = LayoutInflater.from(parent.context).inflate(R.layout.adapter_info, parent, false)

return InfoViewHolder(view)
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder) {
is InfoViewHolder -> holder.bind(itemList[position].city, itemList[position].name,
itemList[position].address, itemList[position].url, itemList[position].open_time)
}
}

override fun getItemCount(): Int {
return if (itemList == null) 0 else itemList.size
}

private inner class InfoViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var infoCity: TextView = itemView.findViewById(R.id.txt_city)
var infoName: TextView = itemView.findViewById(R.id.txt_name)
var infoAdress: TextView = itemView.findViewById(R.id.txt_address)
var infoUrl: TextView = itemView.findViewById(R.id.txt_url)
var infoOpenTime: TextView = itemView.findViewById(R.id.txt_open_time)

fun bind(city: String, name: String, adress: String, url: String, opentime: String) {
infoCity.text = city
infoName.text = name
infoAdress.text = adress
infoUrl.text = url
infoOpenTime.text = opentime
}
}
}

2. 創建物件樣式 xml

物件 xml

3. 在 Activity 中,將 RecycleView 與 LayoutManager 與 Adpter 連接。

private fun initRecycleView(data: List<CityResponse>) {
binding.viewInfo.layoutManager = LinearLayoutManager(this)
binding.viewInfo.adapter = MainListAdapter(this, data)
}

4. 結果

Reference:

--

--

Kombayar
Kombayar

Written by Kombayar

I’m a graduate student. Self-teaching coding on Internet, wanted to write some articles to make myself remember the code.

No responses yet