RecyclerView使用指南(一)—— 基本使用
宣告:原創作品,轉載請註明出處:ofollow,noindex">www.jianshu.com/p/5525310c0…
RecyclerView是用於列表展示的控制元件,對於小白來說,是比較難使用的,下面,我將對它的最基本使用方式進行講解。
- 步驟:
- 新增Recyclerview依賴。
- 在xml檔案中新增Recyclerview控制元件。
- 建立Recyclerview的Adapter(介面卡)。
- 將介面卡設定給Recyclerview。
一、新增Recyclerview依賴
- 在模組的build.gradle中的dependencies{}中新增如下程式碼:
implementation 'com.android.support:recyclerview-v7:28.0.0' 複製程式碼
二、在xml檔案中新增Recyclerview控制元件
<android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" app:layoutManager="android.support.v7.widget.LinearLayoutManager"/> 複製程式碼
三、建立Recyclerview的Adapter(介面卡)
- 步驟:
- 建立RecyclerView.Adapter類的子類,泛型傳入RecyclerView.ViewHolder類。
- 建立RecyclerView.ViewHolder類的子類。
- 在RecyclerView.ViewHolder的子類中初始化item的控制元件。
- 重寫RecyclerView.Adapter類的相關方法。
package com.liuym.myapplication; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.List; public class RvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { //資料來源 private List<Data> mList; public RvAdapter(List<Data> list) { mList = list; } /** * 建立ViewHolder * * @param viewGroup * @param i * @return */ @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View item = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_rv, viewGroup, false); RecyclerView.ViewHolder holder = new MyViewHolder(item); return holder; } /** * 通過ViewHolder對item中的控制元件進行控制(如:顯示資料等等) * * @param viewHolder * @param i */ @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { MyViewHolder holder = (MyViewHolder) viewHolder; Data data = mList.get(i); holder.iv.setImageResource(R.drawable.ic_launcher_background); holder.tv.setText(data.getText()); } /** * 返回列表長度 * * @return */ @Override public int getItemCount() { return mList == null ? 0 : mList.size(); } /** * 建立ViewHolder類,用來快取item中的子控制元件,避免不必要的findViewById */ class MyViewHolder extends RecyclerView.ViewHolder { ImageView iv; TextView tv; public MyViewHolder(@NonNull View itemView) { super(itemView); iv = itemView.findViewById(R.id.iv); tv = itemView.findViewById(R.id.tv); } } } 複製程式碼
四、將介面卡設定給Recyclerview
private void initRv() { List<Data> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { String text = String.format("mockData: %1s", i); list.add(new Data(text)); } RecyclerView recyclerView = findViewById(R.id.rv); RvAdapter adapter = new RvAdapter(list); recyclerView.setAdapter(adapter); } 複製程式碼
總結
這一篇,我講解了RecyclerView的基本使用方式,下一篇,我會講解如何在RecyclerView中使用不同的佈局。