我有一个Activity,其列表绑定到ListAdapter,将数据从数据库读入ArrayList。首次加载数据时,一切都很顺利。当Activity打开并且正在显示列表时,数据库中的数据可能会被服务更新,但列表不会反映更改,因为ArrayList不知道更改。如果Activity不再处于前台,如果用户进入主屏幕然后返回到前台,我希望Activity不显示它之前做的事情,而是使用ListAdapter视图绑定。我觉得有些东西需要调用finish(),但我不确定是什么。这就是我在活动中所拥有的。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setUpViews();
app = (MyApplication) getApplication();
adapter = new MyListAdapter(this, app.getMyEvents());
setListAdapter(adapter);
}
@Override
protected void onResume() {
super.onResume();
adapter.forceReload();
}
答案 0 :(得分:2)
我有一个列表的活动 绑定到ListAdapter读取数据 从数据库到ArrayList。
为什么不使用CursorAdapter
而不是将所有内容都读入ArrayAdapter
?
活动开放时 正在显示列表是可能的 并且很可能是数据中的 数据库将由服务更新 但清单并没有反映出来 更改,因为ArrayList没有 知道这些变化。
如果您使用了CursorAdapter
,则可以在requery()
上调用Cursor
,您的列表将使用数据库的最新内容进行更新。例如,您可以在onStart()
中执行此操作,只要用户返回活动 - 从主屏幕,他们接听的来电等等,它就会被触发。