📌  相关文章
📜  如何在 recyclerview 持有者中使用多个数组列表 (1)

📅  最后修改于: 2023-12-03 15:38:26.011000             🧑  作者: Mango

如何在 RecyclerView 持有者中使用多个数组列表

在开发 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;
    }
}

其中包含了两个数组列表 list1list2

接下来,定义一个 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 对象获取 list1list2 数组列表,并根据传入的 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 持有者中使用多个数组列表了。

以上是一种实现方式,当然还有其他不同的实现方式,可以根据自己的需求进行选择。