我正在开发各种各样的测验应用程序。在一个部分中,我从sqlite DB收到一个光标。 它包含问题的ID以及问题的顺序。 我想基于这些数据建立一个测验活动,一旦我弄清楚这个循环,就将问题ID与sql链接起来。
基本上我希望能够根据其光标位置及其订货号变量(1,2,3等)为第一个问题构建活动。每次他们回答问题并单击按钮时,它将迭代循环并转到下一个光标项和订单号(问题)。
我坚持如何做到这一点。
Cursor questionID_query = dbHelper.getQuestionIDListFromChapterID(chapter_id);
我知道我必须根据游标计数以某种方式循环。
for(int i=0; i < questionID_query.getCount(); i++){
// loop through cursor
//build question list
//listen for button click
}
基本上任何关于如何实现这一点的提示都会非常好,我被烧毁了。
答案 0 :(得分:0)
我认为最好的方法,就像魅力一样。
public ArrayList<HashMap<String, String>> readRowSQL(String rawSQL, String[] rawSQLSelectionArguments) {
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
Cursor cursor = this.db.rawQuery(rawSQL, rawSQLSelectionArguments);
this.colCount = cursor.getColumnCount();
this.rowCount = cursor.getCount();
if (cursor.moveToFirst()) {
do {
HashMap<String, String> col = new HashMap<String, String>();
int size =cursor.getColumnCount();
for (int i = 0; i < size; i++) {
col.put(cursor.getColumnName(i), cursor.getString(i));
}
list.add(col);
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return list;
}
答案 1 :(得分:0)
试试这个:
当您返回光标时,请先返回:
cursor.moveToFirst();
现在处于活动状态,当光标返回给你时,然后从光标中获取问题并设置为textviews和all。将此设置为textviews后,只需将光标移动到下一个问题,如:
cursor.moveToNext();
因此,当您单击下一个按钮时,只需从光标获取值,然后再次使其移动。这样每次点击按钮都可以得到下一个问题。
所以就像:
在onCreate()方法中获取Cursor
Cursor questionID_query = dbHelper.getQuestionIDListFromChapterID(chapter_id);
questionID_query.moveToFIrst();
txtQuestion.settext(questionID_query.getString(QuestionColumnNo));
questionID_query.moveToNext();
并在ButtonClick事件中:
txtQuestion.settext(questionID_query.getString(QuestionColumnNo));
questionID_query.moveToNext();
希望它能帮助!!