Android开发学习:RecyclerView的使用

0 阅读1分钟

准备工作

引入依赖

在gradle.build文件中引入如下依赖:

implementation("androidx.recyclerview:recyclerview:1.3.2")

创建两个视图

创建一个视图,这个视图是recyclerview所存在的视图

<?xml version="1.0" encoding="utf-8"?>  
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    xmlns:app="http://schemas.android.com/apk/res-auto">  
  
    <androidx.recyclerview.widget.RecyclerView  
        android:id="@+id/main"  
        android:layout_width="366dp"  
        android:layout_height="649dp"  
        android:layout_marginLeft="4dp"  
        app:layout_constraintBaseline_toTopOf="parent"  
        app:layout_constraintLeft_toLeftOf="parent"  
        />  
  
</androidx.constraintlayout.widget.ConstraintLayout>

如下是每个item的视图的创建:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content">  
  
    <TextView  
        android:id="@+id/textView3"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:text="TextView"  
        android:textSize="60dp"  
        android:background="#ff9900"/>  
</LinearLayout>

创建Adapter(核心)

Adapter的作用就是把数据和界面连接起来,因此要告诉界面要显示几个数据、每个数据长什么样、显示什么内容,分别需要重写三个方法:getItemCount,onCreateViewHolder,onBindViewHolder

创建内部类ViewHolder

ViewHolder的作用:用来“缓存”列表中的对象,让滑动更加流畅

class LinearViewHolder extends RecyclerView.ViewHolder {  
    private TextView textView;  
    public LinearViewHolder(View itemView) {  
        super(itemView);  
        textView=itemView.findViewById(R.id.textView3);  
    }  
}

重写三个方法

//决定控件长什么样
@Override  
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {  
    View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_linearrv_item,parent,false);  
    return new LinearViewHolder(view);  
}  
//决定屏幕控件上显示什么内容
@Override  
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {  
    String item=dataList.get(position);  
    ((LinearViewHolder) holder).textView.setText(item);  
}  
//设置总共显示的内容
@Override  
public int getItemCount() {  
    return 10;  
}

在Activity中设置布局和适配器

写好Adapter后,就需要在Activity中设置

recyclerView.setLayoutManager(new LinearLayoutManager(this));  
recyclerView.setAdapter(new LinearAdapter(this,dataList));