2010-05-02 66 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