📅  最后修改于: 2023-12-03 15:38:26.011000             🧑  作者: Mango
在开发 Android 应用时,经常需要使用 RecyclerView
来展示数据列表。RecyclerView
中的每个条目都是一个 ViewHolder,它负责显示该条目的数据。有时候一个条目的数据需要从多个数组列表中获取,那么如何在 ViewHolder 中使用多个数组列表呢?
以下是一种实现方式。
首先,我们定义一个包含所有数组列表的数据模型类 DataModel
,它的定义如下:
public class DataModel {
private List<String> list1;
private List<Integer> list2;
public List<String> getList1() {
return list1;
}
public void setList1(List<String> list1) {
this.list1 = list1;
}
public List<Integer> getList2() {
return list2;
}
public void setList2(List<Integer> list2) {
this.list2 = list2;
}
}
其中包含了两个数组列表 list1
和 list2
。
接下来,定义一个 ViewHolder,它的定义如下:
public class CustomViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
public CustomViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textview);
}
public void bindData(DataModel dataModel, int position) {
List<String> list1 = dataModel.getList1();
List<Integer> list2 = dataModel.getList2();
// 根据 position 获取 list1 和 list2 中的数据
String text1 = list1.get(position);
int number = list2.get(position);
// 将数据显示在 TextView 中
textView.setText(text1 + " " + number);
}
}
在 bindData
方法中,我们通过传入的 DataModel
对象获取 list1
和 list2
数组列表,并根据传入的 position
参数获取到当前条目的数据。然后将数据显示在 TextView
中。
最后,定义一个 RecyclerView.Adapter
,它的定义如下:
public class CustomAdapter extends RecyclerView.Adapter<CustomViewHolder> {
private List<DataModel> mData;
public CustomAdapter(List<DataModel> data) {
mData = data;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new CustomViewHolder(view);
}
@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
DataModel dataModel = mData.get(position);
holder.bindData(dataModel, position);
}
@Override
public int getItemCount() {
return mData.size();
}
}
在 onBindViewHolder
方法中,我们获取当前条目的 DataModel
对象,并调用 CustomViewHolder
中的 bindData
方法将数据绑定到视图中。
最后,在 Activity 中设置 RecyclerView 的 Adapter:
List<DataModel> data = new ArrayList<>();
// 初始化 data 数组列表
CustomAdapter adapter = new CustomAdapter(data);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
这样就能在 RecyclerView 持有者中使用多个数组列表了。
以上是一种实现方式,当然还有其他不同的实现方式,可以根据自己的需求进行选择。