RecyclerView
是 Android 中用于显示大量数据集合的高性能列表控件
1.安装依赖
arduino
implementation 'androidx.recyclerview:recyclerview:1.2.1'
2.定义渲染容器xml
xml
<!-- activity_main.xml -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
3.定义列表项布局
xml
<!-- list_item_layout.xml -->
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"/>
4.创建ViewHolder
用于获取列表项的一些具体组件,方便后期直接通过这个ViewHolder能够直接选中指定的一些TextView,Button,ImageView等等
scala
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
5.创建适配器
创建一个继承自 RecyclerView.Adapter
的适配器类,用于管理数据和绑定数据到视图,将刚刚创建的ViewHolder通过泛型传进去,构造器接收外部传入的数据
scala
public class MyAdapter extends RecyclerView.Adapter<ViewHolder> {
private List<String> dataList;
public MyAdapter(List<String> dataList) {
this.dataList = dataList;
}
}
6.实现父类的三个方法alt+enter
快捷键,详细带
less
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
7.实现onCreateViewHolder方法
刚刚第4步的时候是预设了一个创建好的ViewHolder,这个方法主要是创建一个真实的ViewHolder,主要是利用LayoutInflater.from
创建一个布局,最后将这个布局塞到ViewHolder
里面使用,和第4步融合
less
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item,null,false);
return new ViewHolder(view);
}
8.实现onBindViewHolder
这个方法主要是为了绑定用户数据到视图上,结合第4,7步,达到闭环
less
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.textView.setText(datalist.get(position));
}
9.实现getItemCount方法
csharp
@Override
public int getItemCount() {
return datalist.size();
}
10.activity使用
主要是选中第1步的容器,设置一个布局管理,然后将预制的动态数据放进刚刚的适配器中,传给recycler的方法。
ini
RecyclerView recyclerview = findViewById(R.id.recyclerView);
recyclerview.setLayoutManager(new LinearLayoutManager(this));
List<String> stringList = Arrays.asList("Item 1", "Item 2", "Item 3");
recyclerview.setAdapter(new MyAdater(stringList));