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

如何向RecyclerView传递多个参数?当前仅支持单个值传递

解决RecyclerView仅显示单个数据项的问题

兄弟,从你贴的适配器代码片段来看,问题大概率出在几个关键方法的缺失或者实现错误上,我帮你一步步排查和修复:

1. 必须正确实现getItemCount()方法

这是RecyclerView决定要渲染多少个列表项的核心方法,如果没写或者返回值不对(比如固定返回1),就只会显示一个item。你需要在适配器里补上这个方法,返回集合的真实大小:

@Override
public int getItemCount() {
    // 返回数据集合的长度,确保不是固定值1
    return trainings != null ? trainings.size() : 0;
}

2. 正确实现onBindViewHolder()方法

这个方法负责把对应位置的数据绑定到ViewHolder的控件上,你可能没写这个方法,或者绑定的时候固定用了同一个索引(比如0)。补全这个方法:

@Override
public void onBindViewHolder(TrainingViewHolder holder, int position) {
    // 获取当前位置的训练数据
    String trainingItem = trainings.get(position);
    // 把数据设置到ViewHolder的控件上(这里假设你的ViewHolder里有个tvTraining的TextView)
    holder.tvTraining.setText(trainingItem);
}

3. 检查TrainingViewHolder的实现

确保你的ViewHolder正确初始化了布局里的控件,比如:

public class TrainingViewHolder extends RecyclerView.ViewHolder {
    // 声明布局里的控件
    TextView tvTraining;

    public TrainingViewHolder(@NonNull View itemView) {
        super(itemView);
        // 初始化控件,要和你的item布局里的id对应
        tvTraining = itemView.findViewById(R.id.tv_training);
    }
}

4. 验证数据源是否正确

最后别忘了检查你传给适配器的ArrayList<String> trainings是不是真的包含多个元素,比如在创建适配器前打印一下集合的大小:

// 比如在Activity/Fragment里
ArrayList<String> trainingList = new ArrayList<>();
trainingList.add("Java");
trainingList.add("Kotlin");
trainingList.add("Android");
Log.d("TrainingData", "数据量:" + trainingList.size()); // 确认这里输出的是大于1的数
TechSkillsAdapter adapter = new TechSkillsAdapter(this, trainingList);

把这些缺失的部分补上后,RecyclerView应该就能正常显示所有数据项了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:09:34