1. 程式人生 > >Android開發筆記 - RecyclerView

Android開發筆記 - RecyclerView

概述

RecyclerView是support:recyclerview-v7中提供的滾動控制元件,想要使用該控制元件,需要進行如下工作:

  1. 引入依賴庫
  2. 在佈局檔案中加入RecyclerView標籤
  3. 建立單項佈局檔案
  4. 建立介面卡類
  5. 在活動中為Recyclerview設定佈局管理器(LayoutManager)和介面卡

雖談不上繁雜,但對於記性不好的我來說也是很難完全記住,遂寫此筆記。

 

參考文章

關於RecyclerView你知道的不知道的都在這了(上)

自從用了RecyclerView,腰再也不痛了,手也不酸了

RecyclerView使用全解析

Android RecyclerView 使用完全解析 體驗藝術般的控制元件

Android 控制元件 RecyclerView

 

一、引入依賴庫

implementation 'com.android.support:recyclerview-v7:27.0.2'

 

二、在佈局檔案中新增標籤

<android.support.v7.widget.RecyclerView
            android:id="@+id/rv_mycreation"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

三、建立單項佈局檔案

該佈局檔案是滾動控制元件中每一個條目的佈局,每個條目的值將在介面卡的ViewHolder子類中設定

item_base_use.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:background="#ddebd774"
    android:orientation="vertical"
    android:layout_marginBottom="10dp">

    <TextView
        android:id="@+id/item_tx"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

四、建立介面卡類


public class MyRecyclerViewAdapterextends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> list;
    
    public MyAdapter(List<String> list) {
        this.list = list;
    }
 
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // 繫結item佈局
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_base_use, parent, false);
        MyAdapter.ViewHolder viewHolder = new MyAdapter.ViewHolder(view);
        // 可在此為每個item設定事件監聽
        return viewHolder;
    }
 
    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        // 設定控制元件的值
        String string = list.get(position);
        holder.mText.setText(string);
    }
 
    @Override
    public int getItemCount() {
        // 返回list的長度
        return list.size();
    }
 
    class ViewHolder extends RecyclerView.ViewHolder {
        // 控制元件物件,對應item中的控制元件
        TextView mText;

        ViewHolder(View itemView) {
            super(itemView);
            // 繫結控制元件
            mText = itemView.findViewById(R.id.item_tx);
        }
    }
}

五、在活動中為Recyclerview設定佈局管理器(LayoutManager)和介面卡

//通過findViewById拿到RecyclerView例項
mRecyclerView = findViewById(R.id.recyclerView);
//設定RecyclerView管理器
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//初始化介面卡
mAdapter = new MyRecyclerViewAdapter(list); 
//設定新增或刪除item時的動畫,這裡使用預設動畫
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//設定介面卡
mRecyclerView.setAdapter(mAdapter);