列表视图的光标适配器未显示最新值

时间:2013-02-09 16:25:45

标签: android android-widget

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

2 个答案:

答案 0 :(得分: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行

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

}
相关问题