更改查询后刷新光标 - onStart()?

时间:2011-11-02 19:26:35

标签: android sqlite cursor

在onCreate()中,我定义一个光标并使用一个按钮在结果中向下移动:

        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!

1 个答案:

答案 0 :(得分:0)

感谢克里斯蒂安,我解决了它。我不确定这是最干净的解决方案,但是......

我创建了一个名为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)); }