准备工作
引入依赖
在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));