You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Android开发中如何在RecyclerView展示多个ArrayList同索引元素

实现步骤
  • 先做数据校验:确保三个ArrayList长度一致,避免后续索引越界。如果业务允许长度不一致,可统一截断到三个列表的最小长度。
  • 自定义RecyclerView的Adapter,构造函数传入三个ArrayList作为数据源。
  • 重写Adapter的getItemCount()方法,返回校验后的统一长度。
  • 在onBindViewHolder方法中,通过入参position直接取出三个列表对应索引的元素,赋值到ViewHolder的对应控件即可。

代码示例

1. 自定义ViewHolder

假设你的列表项布局item_recycler.xml中有三个TextView,id分别为tv_first、tv_second、tv_third:

public class MyViewHolder extends RecyclerView.ViewHolder {
    TextView tvFirst, tvSecond, tvThird;
    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        tvFirst = itemView.findViewById(R.id.tv_first);
        tvSecond = itemView.findViewById(R.id.tv_second);
        tvThird = itemView.findViewById(R.id.tv_third);
    }
}

2. 自定义Adapter

public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
    private List<Integer> firstList;
    private List<String> secondList;
    private List<String> thirdList;

    // 构造函数传入三个数据源
    public MyAdapter(List<Integer> firstList, List<String> secondList, List<String> thirdList) {
        // 长度校验,不满足直接抛出异常,也可根据业务自行做兼容
        if (firstList.size() != secondList.size() || firstList.size() != thirdList.size()) {
            throw new IllegalArgumentException("三个列表长度必须保持一致");
        }
        this.firstList = firstList;
        this.secondList = secondList;
        this.thirdList = thirdList;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler, parent, false);
        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        // 直接取同索引的三个元素赋值
        holder.tvFirst.setText(String.valueOf(firstList.get(position)));
        holder.tvSecond.setText(secondList.get(position));
        holder.tvThird.setText(thirdList.get(position));
    }

    @Override
    public int getItemCount() {
        return firstList.size();
    }
}

3. 给RecyclerView设置Adapter

// 初始化你的三个数据源
ArrayList<Integer> firstArray = new ArrayList<>(Arrays.asList(1,2,3));
ArrayList<String> secondArray = new ArrayList<>(Arrays.asList("A","B","C"));
ArrayList<String> thirdArray = new ArrayList<>(Arrays.asList("X","Y","Z"));

// 绑定Adapter到RecyclerView
MyAdapter adapter = new MyAdapter(firstArray, secondArray, thirdArray);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);

注意:如果后续需要修改数据源,修改完列表后调用notifyDataSetChanged()或者对应增量更新方法即可刷新列表。

内容的提问来源于stack exchange,提问作者ucchasharen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:48:04