[英]Data not returned properly from database
我有這個函數,它將評估的arraylist返回給用戶。 每個評估都有一個問題列表。 我從數據庫中得到問題但是,當我將評估arrayList返回給用戶時,問題arrayList為空。 任何人都可以幫我填充問題數組。
注意:當我這樣做時Log.v("--", "Questions: " + questions.size());
從下面的代碼,它給了我前面的大小。 90,但是之后的一行,當我做Log.v("--", "AssessmentQuestions: "+assessment.getQuestions().size());
它給了我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;
}
評估員班:
import java.io.Serializable;
import java.util.ArrayList;
public class Assessment implements Serializable {
private static final long serialVersionUID = 1288566422025895376L;
private String date;
private int doctorID, childID, id;
private ArrayList<Question> questions;
public Assessment(int id, String date, int doctorID, int childID,
ArrayList<Question> questions) {
questions = new ArrayList<Question>();
this.id = id;
this.setDate(date);
this.setDoctorID(doctorID);
this.setChildID(childID);
this.setQuestions(questions);
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public int getDoctorID() {
return doctorID;
}
public void setDoctorID(int doctorID) {
this.doctorID = doctorID;
}
public int getChildID() {
return childID;
}
public void setChildID(int childID) {
this.childID = childID;
}
public ArrayList<Question> getQuestions() {
return questions;
}
public void setQuestions(ArrayList<Question> questions) {
this.questions = questions;
}
}
問題類:
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;
}
}
在構造函數中,您沒有復制對問題數組列表的引用,您已經創建了一個新的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
}
你想用線questions = new ArrayList<Question>();
做什么questions = new ArrayList<Question>();
,據我所知,它可以簡單地省略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.