以下是代码:
@Override
public void onResume() {
super.onResume();
adapter.notifyDataSetChanged();
Log.d("onResumeMethod", "It is called! :)");
}
}
我在数据库中编辑任何内容时使用它来刷新列表。不幸的是它不起作用。我读过的某个地方我应该使用requery,但它已经被弃用了。有什么建议吗?
编辑:
已经尝试过,但没有帮助(不幸的是,因为我确信它会起作用):
@Override
public void onResume() {
super.onResume();
adapter = new ArrayAdapter<Friend>(this,
android.R.layout.simple_list_item_1, list);
this.getListView().setAdapter(adapter);
this.getListView().invalidate();
}
我发现了另一个问题:如果我使用后退按钮(在模拟器上)返回桌面并尝试通过单击菜单项打开应用程序,它会向我显示:
03-19 15:43:50.153: E/AndroidRuntime(7374): FATAL EXCEPTION: main
03-19 15:43:50.153: E/AndroidRuntime(7374): java.lang.RuntimeException: Unable to start
activity
ComponentInfo{com.example.birthdayreminder/com.example.birthdayreminder.MainActivity}:
java.lang.RuntimeException: Your content must have a ListView whose id attribute is
'android.R.id.list'
之前我遇到过这个问题所以他们建议我把它插入我的xml:
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
</ListView>
答案 0 :(得分:2)
您需要再次从数据库中获取数据。然后,您可以在列表视图中再次设置适配器并调用invalidate()
,如下所示:
@Override
public void onResume() {
super.onResume();
adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, db.getMyData());
myListView.setAdapter(adapter);
myListView.invalidate();
}
db.getMyData()
是从数据库获取数据的方法,而myListView
是ListView
。
希望它有所帮助!
答案 1 :(得分:0)
覆盖notifyDataSetChanged
:
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
myArray.clear();
/* load the data again */
myArray = yourMethodToLoadData();
}