簡體   English   中英

數據未從數據庫正確返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM