2013-08-23 119 views
0

我正在尝试各种测验应用程序。在一节中,我从我的sqlite数据库收到一个光标。 它包含问题的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

最好的方法,我认为和工作像魅力。当您返回游标那么首先做返回前

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和所有。这种设置textviews后只是将光标移动到下一个问题,如:

cursor.moveToNext(); 

所以,当你点击按钮从光标旁边刚刚得到的值,然后再使其下一步行动。这样你每次点击按钮就可以得到下一个问题。

所以它像:

在onCreate()方法得到光标

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(); 

希望它帮助!