【问题标题】:what is the bug on my custom RecyclerView Adapter?我的自定义 RecyclerView 适配器有什么错误?
【发布时间】:2019-12-30 13:05:57
【问题描述】:

我正在处理 Recycler View,我设置一切正常(因为它接缝)但总是活动崩溃,在进行一些调试后,我找到了它发生的位置,但从来没有弄清楚! 这是我的 RecyclerView 适配器

在此处输入代码

public class StudentsAdapter extends RecyclerView.Adapter<StudentsAdapter.mHolder> {
    private  List<Student> mStudents;
    private  Context mContext;

    public StudentsAdapter(List<Student> students, Context mContext) {
        Log.d("StudentsAdapter", "in Constructor");
        this.mStudents = students;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public mHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Log.d("StudentsAdapter", "in onCreateViewHolder");
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View v = inflater.inflate(R.layout.note_list_students, parent, false);
        return new mHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull mHolder holder, int position) {
        Log.d("StudentsAdapter", "in onBindViewHolder");
        Student student = mStudents.get(position);
        Log.d("StudentsAdapter", "in getting Student Object");
        holder.nameTv.setText(student.getName());
        Log.d("StudentsAdapter", "in Setting Text name");
        holder.genderTv.setText(student.getGender());
        holder.birthdayTv.setText(student.getBirthday());
    }

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

    public class mHolder extends RecyclerView.ViewHolder {
        TextView nameTv, genderTv, birthdayTv;

        public mHolder(@NonNull View itemView) {
            super(itemView);
            Log.d("StudentsAdapter", "in View Holder");
            nameTv = itemView.findViewById(R.id.name);
            genderTv = itemView.findViewById(R.id.gender);
            birthdayTv = itemView.findViewById(R.id.birthday);

        }
    }
}

完成调试过程后,我得到了:

2019-12-30 13:05:08.583 6169-6169/com.example.schooltendancemanager D/StudentsAdapter: in Constructor
2019-12-30 13:05:08.625 6169-6169/com.example.schooltendancemanager D/StudentsAdapter: in onCreateViewHolder
2019-12-30 13:05:08.638 6169-6169/com.example.schooltendancemanager D/StudentsAdapter: in View Holder
2019-12-30 13:05:08.638 6169-6169/com.example.schooltendancemanager D/StudentsAdapter: in onBindViewHolder
2019-12-30 13:05:08.638 6169-6169/com.example.schooltendancemanager D/StudentsAdapter: in getting Student Object
2019-12-30 13:05:08.642 6169-6169/com.example.schooltendancemanager E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.schooltendancemanager, PID: 6169
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.schooltendancemanager.ui.StudentsAdapter.onBindViewHolder(StudentsAdapter.java:43)
        at com.example.schooltendancemanager.ui.StudentsAdapter.onBindViewHolder(StudentsAdapter.java:18)
        at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
        at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)



【问题讨论】:

标签: android android-recyclerview nullpointerexception adapter


【解决方案1】:

检查以确保您的 R.layout.note_list_students 布局文件包含具有这些 id 的 Textview。

【讨论】:

    【解决方案2】:

    我认为你在下面这行中使用了错误的 id,如果你有这个 id(性别),请检查设计文件 note_list_students.xml

    genderTv = itemView.findViewById(R.id.gender);
    

    【讨论】:

      【解决方案3】:

      由于布局note_list_students引起的问题,即使TextViews匹配但我曾经有两个版本的布局,标准一个是note_list_students.xml和另一个版本note_list_students.xml v21,所以我重新创建它并使用标准仅布局!

      感谢您的回复!

      【讨论】:

        猜你喜欢
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多