2011-11-02 60 views
0

在的onCreate(),I定义游标并在使用按钮的结果向下移动:查询中更改光标后 - onStart()?

 final Cursor cursor = (Cursor) WoordData.fetchset(USERCHOICE); 

       btnVolgende.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

       tv.setText(cursor.getString(0)); 

        cursor.moveToNext(); 
        if (cursor.isAfterLast()){     
         cursor.moveToFirst();    
     }}}); 

在一个单独的活性(通过首选项)我允许用户改变USERCHOICE的值。

问:如何在用户返回主活动时用新查询(USERCHOICE的新值)重新加载游标?

thnx!

回答

0

感谢Christian,我解决了它。我不确定这是否是最干净的解决方案,虽然..

我创建了一个名为resetneeded的布尔值。

在clickbutton代码我做的:

btnVolgende.setOnClickListener(new View.OnClickListener() { public void onClick(View v) {
if (resetneeded) { cursor = (Cursor) WoordData.fetchset(kernset);
resetneeded = false; } startManagingCursor(cursor); tvFlitswoord.setText(cursor.getString(0)); cursor.moveToNext(); if (cursor.isAfterLast()){
cursor.moveToFirst(); }}
}

然后,在调用onStart(),我设置布尔resetneeded为true。

//编辑 - 第二解

最后,我决定使用ArrayList用于(与按钮和循环通过它)传递话到TextView的。一个ArrayList似乎更容易处理,减少脆弱..

代码:

public void onStart(){ 
    super.onStart();  
    getPrefs(); 
    wordlistarray.clear(); 
    cursor = (Cursor) WoordData.fetchset(kernset);  
    cursor.moveToFirst(); 
    while(!cursor.isAfterLast()) { 

     String wordtoadd = cursor.getString(0); 
     wordlistarray.add(wordtoadd); 
     cursor.moveToNext(); 
    }  

      for(int i = 0; i < wordlistarray.size(); 
        i++){ Log.d("word in array", "" + wordlistarray.get(i)); }