宣告:原創作品,轉載請註明出處: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中使用不同的佈局。
系列文章
《RecyclerView使用指南(一)—— 基本使用》
《RecyclerView使用指南(二)—— 多種ItemLayout》
《RecyclerView使用指南(三)—— 新增分割線和點選事件》
《RecyclerView使用指南(四)—— 使用ItemDecoration》
《RecyclerView使用指南(五)—— 實現吸頂效果》