0

我正在使用 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);
4

2 回答 2

1

光标不会改变它的内容,只是因为底层数据集改变了它的内容!游标包含在进行查询时由查询产生的数据。

你需要一个加载器。您可以在此处查看示例代码:

https://github.com/marakana/yamba/blob/yambaII/Yamba/src/com/marakana/android/yamba/TimelineActivity.java

您必须首先初始化 loaderManager。接下来,当它叫你回来时,把它交给一个装载机。最后,当您在加载程序运行后调用您时,您必须将加载程序交换到适配器中。

当然,您也必须通知游标它已过时。这里有示例代码:

https://github.com/marakana/yamba/blob/yambaII/YambaService/src/com/marakana/android/yamba/svc/data/YambaProvider.java

参见,例如,第 182 行

于 2013-02-09T16:39:15.447 回答
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);        
}

}
于 2013-02-09T16:49:43.797 回答