首页 > 解决方案 > IndexOutOfBoundsException:索引:2,大小:1 在 java.util.ArrayList.get(ArrayList.java:437)

问题描述

当我设置它说的数据时

String enrloment = studentData.get(position).getEnrollments().get(position).getCourse().getTitle();

这条线

java.lang.IndexOutOfBoundsException:索引:2,大小:1 在 java.util.ArrayList.get(ArrayList.java:437)

我的应用程序崩溃了我正在使用改造库来获取数据

这是我的适配器类

块引用

公共类 StudentAdapter 扩展 RecyclerView.Adapter<StudentAdapter.StudentViewholde> {

private Context context;
private List<StudentInformation>studentData;







public StudentAdapter(Context context, List<StudentInformation> studentData) {
    this.context = context;
    this.studentData = studentData;

}


public void setStudentData(List<StudentInformation> studentData) {
    this.studentData = studentData;
    notifyDataSetChanged();
}



@NonNull
@Override
public StudentViewholde onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View view = inflater.inflate(R.layout.single_raw,parent,false);


    return new StudentViewholde(view);
}


@Override
public void onBindViewHolder(@NonNull StudentViewholde holder, int position) {
    
    StudentInformation studentInformation = studentData.get(position);

    holder.idTv.setText(studentInformation.getID().toString());
    holder.nameTv.setText(studentInformation.getFirstMidName());
    holder.enrolmentId.setText(studentInformation.getEnrollments().get(position).getStudentID().toString());


}

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

class StudentViewholde extends RecyclerView.ViewHolder{
    TextView idTv,nameTv,enrolmentId;
    public StudentViewholde(@NonNull View itemView) {
        super(itemView);
        idTv = itemView.findViewById(R.id.idTv);
        nameTv = itemView.findViewById(R.id.name);
        enrolmentId = itemView.findViewById(R.id.enrollmentDate);
    }
}

}

这是我的学生信息 Pojo 课程

公共类学生信息{

@SerializedName("Enrollments")
@Expose
private List<Enrollment> enrollments ;
@SerializedName("ID")
@Expose
private Integer iD;
@SerializedName("LastName")
@Expose
private String lastName;
@SerializedName("FirstMidName")
@Expose
private String firstMidName;
@SerializedName("EnrollmentDate")
@Expose
private String enrollmentDate;

public List<Enrollment> getEnrollments() {
    return enrollments;
}

public void setEnrollments(List<Enrollment> enrollments) {
    this.enrollments = enrollments;
}

public Integer getID() {
    return iD;
}

public void setID(Integer iD) {
    this.iD = iD;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getFirstMidName() {
    return firstMidName;
}

public void setFirstMidName(String firstMidName) {
    this.firstMidName = firstMidName;
}

public String getEnrollmentDate() {
    return enrollmentDate;
}

public void setEnrollmentDate(String enrollmentDate) {
    this.enrollmentDate = enrollmentDate;
}

}

这是我的入学 pojo 课

公共类注册{

@SerializedName("Course")
@Expose
private Course course;
@SerializedName("EnrollmentID")
@Expose
private Integer enrollmentID;
@SerializedName("CourseID")
@Expose
private Integer courseID;
@SerializedName("StudentID")
@Expose
private Integer studentID;
@SerializedName("Grade")
@Expose
private Integer grade;

public Course getCourse() {
    return course;
}

public void setCourse(Course course) {
    this.course = course;
}

public Integer getEnrollmentID() {
    return enrollmentID;
}

public void setEnrollmentID(Integer enrollmentID) {
    this.enrollmentID = enrollmentID;
}

public Integer getCourseID() {
    return courseID;
}

public void setCourseID(Integer courseID) {
    this.courseID = courseID;
}

public Integer getStudentID() {
    return studentID;
}

public void setStudentID(Integer studentID) {
    this.studentID = studentID;
}

public Integer getGrade() {
    return grade;
}

public void setGrade(Integer grade) {
    this.grade = grade;
}

}

标签: javaandroidandroid-recyclerviewretrofitadapter

解决方案


异常意味着您正在尝试访问大小为 1(大小:1)的列表的第三个元素(索引:2)。您收到错误的代码行是:

String enrloment = studentData.get(position).getEnrollments().get(position).getCourse().getTitle();

在这一行中,您尝试使用 .get(position) 方法访问 studentData 和注册。您使用的索引是我假设等于 2 的位置。所以问题是 studentData 或注册里面的元素少于 3 个。


推荐阅读