2010-05-02 64 views
2

我有一个活动,其中绑定到ListAdapter的列表将数据从数据库读入ArrayList。数据首次加载时一切正常。当活动处于打开状态并且列表正在显示时,数据库中的数据可能会被服务更新,但列表并未反映更改,因为ArrayList不知道更改。如果活动不再处于前台,如果用户转到主屏幕然后又回到前台,我希望活动不显示之前的操作,而是使用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(); 
} 

回答

2

我有是 绑定到ListAdapter读取数据 成从数据库中的ArrayList的列表的研究。

为什么不使用CursorAdapter而不是将所有内容都读入ArrayAdapter

而活动是开放的,正在显示 名单有可能 并可能在 数据库中的数据将通过服务 被更新,但列表中不反映 变化,因为该ArrayList并不知道 的变化。

如果你使用一个CursorAdapter,你可以只调用requery()Cursor,并且您的列表将与数据库中的最新内容更新。例如,您可以在onStart()中执行此操作,例如,只要用户返回到活动状态(从主屏幕,从他们接听的来电)中,就会触发它。

+0

CursorAdaptor是要走的路。谢谢 – JDM 2010-05-06 03:23:30