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

Android Studio中RecyclerView适配器空指针异常问题求助

RecyclerView Adapter空指针异常解决(TextView对象为空)

问题原因

空指针异常出现在onBindViewHolder中调用setText时,说明holder.className或holder.subjectName为null——也就是在ClassViewHolder构造方法里,findViewById没有找到对应的控件实例。

解决步骤

  1. 核对布局文件控件ID
    打开res/layout/class_item.xml,检查TextView控件的ID是否与代码中的R.id.class_tv、R.id.class_edit完全一致,注意拼写、大小写不能有任何差异(比如不能把class_edit写成class_edit_tv)。

  2. 确认加载的布局文件正确
    检查onCreateViewHolder中inflate方法传入的布局是否为R.layout.class_item,避免误加载其他布局导致找不到目标控件。

  3. 添加空值防护(可选)
    为避免后续类似崩溃,可在设置文本前增加判空逻辑,同时处理数据为空的情况:

    @Override
    public void onBindViewHolder(@NonNull ClassViewHolder holder, int position) {
        ClassItem currentItem = classItems.get(position);
        if (holder.className != null) {
            holder.className.setText(currentItem.getClassName() != null ? currentItem.getClassName() : "");
        }
        if (holder.subjectName != null) {
            holder.subjectName.setText(currentItem.getSubjectName() != null ? currentItem.getSubjectName() : "");
        }
    }
    

原问题代码

package com.eterces.bauetattendance;

class ClassAdapter extends RecyclerView.Adapter<ClassAdapter.ClassViewHolder> {
    ArrayList<ClassItem> classItems;
    Context context;

    public ClassAdapter(Context context, ArrayList<ClassItem> classItems) {
        this.classItems = classItems;
        this.context = context;
    }

    public static class ClassViewHolder extends RecyclerView.ViewHolder {
        TextView className;
        TextView subjectName;

        public ClassViewHolder(@NonNull View itemView) {
            super(itemView);
            className = itemView.findViewById(R.id.class_tv);
            subjectName = itemView.findViewById(R.id.class_edit);
        }
    }

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

    @Override
    public void onBindViewHolder(@NonNull ClassViewHolder holder, int position) {
holder.className.setText(classItems.get(position).getClassName());
holder.subjectName.setText(classItems.get(position).getSubjectName());
    }

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

报错信息

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.eterces.bauetattendance.ClassAdapter.onBindViewHolder(ClassAdapter.java:47) at com.eterces.bauetattendance.ClassAdapter.onBindViewHolder(ClassAdapter.java:14)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:40:42