Java 未正确从数据库返回数据
我有一个函数,它将评估的arraylist返回给用户。每项评估都有一系列问题。我从数据库中获取问题,但当我将评估arrayList返回给用户时,问题arrayList为空。有人能帮我填充问题数组吗 注意: 当我这样做时,Java 未正确从数据库返回数据,java,android,arraylist,android-sqlite,Java,Android,Arraylist,Android Sqlite,我有一个函数,它将评估的arraylist返回给用户。每项评估都有一系列问题。我从数据库中获取问题,但当我将评估arrayList返回给用户时,问题arrayList为空。有人能帮我填充问题数组吗 注意: 当我这样做时,Log.v(“-”,“Questions:”+Questions.size())从下面的代码中,它给我的尺寸是ex.90,但在那之后的一行,当我这样做的时候 Log.v(“-”,“AssessmentQuestions:“+assessment.getQuestions().si
Log.v(“-”,“Questions:”+Questions.size())代码>从下面的代码中,它给我的尺寸是ex.90,但在那之后的一行,当我这样做的时候
Log.v(“-”,“AssessmentQuestions:“+assessment.getQuestions().size())代码>它给了我大小:0
这是我的密码:
public ArrayList<Assessment> getAllAsssessments() {
ArrayList<Assessment> assessments = new ArrayList<Assessment>();
Assessment assessment;
String selectQuery = "SELECT * FROM " + TSCYC;
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
int AssessmentID = cursor.getInt(0);
int childID = cursor.getInt(1);
int doctorID = cursor.getInt(2);
String assessmentDate = cursor.getString(3);
Log.v("--", assessmentDate);
ArrayList<Question> questions = new ArrayList<Question>();
Question q;
assessment = new Assessment(AssessmentID, assessmentDate,
doctorID, childID, questions);
for (int i = 0; i < 90; i++) {
q = new Question("i", (i + 1));
q.setAnswer(cursor.getInt(i + 4));
questions.add(q);
}
Log.v("--", "Questions: " + questions.size());
assessment = new Assessment(AssessmentID, assessmentDate,
doctorID, childID, questions);
assessments.add(assessment);
Log.v("--", "AssessmentQuestions: "
+ assessment.getQuestions().size());
} while (cursor.moveToNext());
}
return assessments;
}
在构造函数中,您没有复制对问题数组列表的引用,而是创建了一个新的ArrayList,请参见下面代码中的标记点:
public Assessment(int id, String date, int doctorID, int childID,
ArrayList<Question> questions) {
questions = new ArrayList<Question>(); //<-- here you make a NEW empty ArrayList
this.id = id;
this.setDate(date);
this.setDoctorID(doctorID);
this.setChildID(childID);
this.setQuestions(questions); //<-- here you setQuestions as the empty arraylist
}
公共评估(int-id、字符串日期、int-doctorID、int-childID、,
ArrayList问题){
questions=new ArrayList();//您的评估构造函数是什么样子的?确定那里一切正常吗?事实上,在评估中,您是否有任何带有new
的内容,我感觉这将是问题所在。不管我们是否需要完整(简短)的工作计划with@RichardTingle你能在回答中给我解释一下吗?我们至少需要评估类的代码。我知道这有数据库集成,所以制作一个自包含的示例很困难,但我们没有足够的代码来处理here@RichardTingle代码更新并添加了类requested@DarkoPetkovski 我被旧的调试代码绊倒的次数。很高兴我能帮上忙!
public class Question implements Serializable{
/**
*
*/
private static final long serialVersionUID = 8703113563916355470L;
private String question;
private int answer, position;
public Question(String question, int position) {
answer = -1;
this.question = question;
this.position = position;
}
public int getAnswer() {
return answer;
}
public void setAnswer(int answer) {
this.answer = answer;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
}
public Assessment(int id, String date, int doctorID, int childID,
ArrayList<Question> questions) {
questions = new ArrayList<Question>(); //<-- here you make a NEW empty ArrayList
this.id = id;
this.setDate(date);
this.setDoctorID(doctorID);
this.setChildID(childID);
this.setQuestions(questions); //<-- here you setQuestions as the empty arraylist
}