RecyclerView使用指南(一)—— 基本使用

will20151115發表於2018-11-27

宣告:原創作品,轉載請註明出處:www.jianshu.com/p/5525310c0…

RecyclerView是用於列表展示的控制元件,對於小白來說,是比較難使用的,下面,我將對它的最基本使用方式進行講解。

  • 步驟:
  1. 新增Recyclerview依賴。
  2. 在xml檔案中新增Recyclerview控制元件。
  3. 建立Recyclerview的Adapter(介面卡)。
  4. 將介面卡設定給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(介面卡)

  • 步驟:
  1. 建立RecyclerView.Adapter類的子類,泛型傳入RecyclerView.ViewHolder類。
  2. 建立RecyclerView.ViewHolder類的子類。
  3. 在RecyclerView.ViewHolder的子類中初始化item的控制元件。
  4. 重寫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使用指南(五)—— 實現吸頂效果》

相關文章