我使用SimpleCrusorAdaptor在列表视图中显示项目列表。当列表视图中的项目被选中时,它会启动另一个活动,此活动会更改列表视图中显示的拼图状态。当此活动终止并且包含列表视图的活动再次变为活动状态时,列表视图将显示旧状态
如何确保包含列表视图的活动恢复,游标适配器是否更新了值?在cativity的onResume()中要做些什么?
private static String[] FROM = { PuzzleDatabase.KEY_PUZZLE_TITLE,
PuzzleDatabase.KEY_PUZZLE_STATUS };
private static int[] TO = { R.id.puzzle_title, R.id.puzzle_status };
ListView listView = (ListView) findViewById(R.id.puzzle_list);
this.cursor = ps.puzzleDatabase.getPuzzleTitles();
// Set up data binding
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.puzzle_list_row, cursor, FROM, TO);
// Assign adapter to ListView
listView.setAdapter(adapter);
答案 0 :(得分:1)
光标不会更改其内容,只是因为底层数据集更改了其内容!游标包含查询产生时查询产生的数据。
你需要一个装载机。您可以在此处查看示例代码:
首先,您必须初始化loaderManager。接下来它是一个装载机,当它给你回电话。最后,在加载程序运行后回调它时,必须将加载程序交换到适配器中。
当然,你必须通知光标它已经过时了。这里有示例代码:
参见,例如,第182行
答案 1 :(得分:1)
更新值尝试执行此操作
class YourClass extends Activity{
//other members
private Bundle savedInstanceState; //add this to your code
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.savedInstanceState = savedInstanceState; //add this to your code
//your other code here
}
@Override
protected void onResume() { //add this function to your code
datasource.open(); //change datasource to your own database class's object
super.onResume();
onCreate(savedInstanceState);
}
}