在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!
答案 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)); }