0

AndroidシステムでSQLiteデータセットを処理する必要があります。

私のdataBaseHelperファイル(DataBaseAccessor)には、次のコードがあります(リストビューに添付すると、関連するデータが表示されます)。

public static ArrayList<QuestionListQuestion> getQuestionListQuestions(long id){
String qry = "select QuestionListQuestionID, QuestionListQuestionQuestionListID, QuestionListQuestionQuestionID, QuestionListQuestionSortOrder, QuestionListQuestionSupplementalQuestionIDYes, QuestionListQuestionSupplementalQuestionIDNo, QuestionListQuestionSupplementalQuestionIDText, QuestionListQuestionSurveyGroupID from QuestionListQuestion  where  QuestionListQuestionQuestionListID=" + id;
ArrayList<QuestionListQuestion> list = new ArrayList<QuestionListQuestion>();
try{
    Cursor cursor = wdb.rawQuery(qry, null);
while (cursor.moveToNext()) {
QuestionListQuestion questionlistquestion = new QuestionListQuestion();
    questionlistquestion.QuestionListQuestionID = cursor.getLong(0);
    questionlistquestion.QuestionListQuestionQuestionListID = cursor.getLong(1);
    questionlistquestion.QuestionListQuestionQuestionID = cursor.getLong(2);
    questionlistquestion.QuestionListQuestionSortOrder = cursor.getLong(3);
questionlistquestion.QuestionListQuestionSupplementalQuestionIDYes = cursor.getString(4);       questionlistquestion.QuestionListQuestionSupplementalQuestionIDNo = cursor.getString(5);
questionlistquestion.QuestionListQuestionSupplementalQuestionIDText = cursor.getString(6);
questionlistquestion.QuestionListQuestionSurveyGroupID = cursor.getLong(7);
list.add(questionlistquestion);
}
    cursor.close();
}
catch (Exception e) {
    e.printStackTrace();
}
return list;
}

次に、システムを拡張して、返された元のリストに基づいてデータを処理し、別のテーブルに新しいレコードを作成できるようにする必要があります。

ボタンに添付された次のものを試しました(スピナーから関連するリストIDを選択します):-

QuestionListID = (String) SiteGenerateQuestions.this.spnQuestL.getSelectedItem().toString();
long SpinnerSelectedBT;
SpinnerSelectedBT = GenerateQuestions.this.spnQuestL.getSelectedItemId();
list = DatabaseAccessor.getQuestionListQuestions(SpinnerSelectedBT);
for (int i=0; i < list.size(); i++){
Toast.makeText(SiteGenerateQuestions.this," list.get(" + i + ")   = " + list.get(i) + " "  , Toast.LENGTH_SHORT).show();
}

トーストは以下を表示します:-

list.get(0) =  com.tw.question.entity.QuestionListQuestion@407a6F70
list.get(1) =  com.tw.question.entity.QuestionListQuestion@407bc170
etc...

... .entity.QuestionListQuestion @ 407bc170の代わりに実際のデータにアクセスするにはどうすればよいですか、それとも完全にオフトラックですか?

どうもありがとう

4

2 に答える 2

0

表示されている出力は、クラスのtoString()メソッドを実装していないためです。QuestionListQuestionそれ以外は、探しているデータがあるようです。オブジェクト自体を連結するのではなく、オブジェクトのIDを出力してみてください(内部で呼び出さtoString()れます)。

また、ボタンがクリックされたときにデータベース操作を行っているように見えるため、UIスレッドの外部でデータベース操作を行っていることを確認してください。高レベルの概要については、ドキュメントを確認してください。AsyncTask問題のデータベース操作にを使用することをお勧めします。

于 2012-08-21T14:06:34.487 に答える
0

@wsanvilleに同意します。get()メソッドは、リストのその場所にあるオブジェクトを返します。オブジェクト(トースト、ログ、System.out.printlnなど)を印刷するとtoString()、印刷出力の値が使用されます。デフォルトtoString()は、パッケージ名の後に@が続き、その後にそのオブジェクトの16進表現が続きます。クラスはメソッドをオーバーライドする必要があるtoString()ため、メソッドを使用get()すると、メソッドに入れたものがすべて出力されますtoString()

于 2012-08-21T14:12:48.010 に答える