2013-08-23 2 views
0

Я работаю над приложением викторины. В одном разделе я возвращаю курсор из моей базы данных sqlite. Он содержит идентификатор для вопроса и порядок вопроса. Я хочу построить викторину на основе этих данных, связывая идентификатор вопроса с 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

Лучший подход, который я считаю и работает как шарм.

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; 
    } 
0

Попробуйте это:

Когда вы возвращаете курсор, то сначала сделайте это до возвращения:

cursor.moveToFirst(); 

сейчас в активности, когда курсор возвращается вы получите то вопрос от курсора и для текстовых просмотров и для всех. и после установки это 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(); 

Надеется, что это помогает !!

Смежные вопросы