2013-07-28 16 views
0

我有一個設置如下的Android:從「孫」活性

活性1使用ListView和ListAdapters從類型A的對象的列表中顯示信息 刷新列表視圖(通過從數據庫中檢索第一次叫它)。

在點擊在活動1 ListView中的項目,則控制前進 到活動2,這再次使用ListView和ListAdapters顯示從類型B的對象列表 信息

有一個'活動2中的「+」按鈕,當點擊切換時,將 控件切換到活動3.在這裏,我可以創建一個類型爲B的對象並將其保存到數據庫。 現在我用活動3 setResult()onActivityResult()在活動2活動2

到目前爲止好更新列表。我可以看到,我只是在活動2.

現在創建如果我按後退按鈕並返回到活動1 B型的項目,並在 挖掘型A相同的項目,然後當我去到活動2,我剛剛創建的項目 未顯示。但是,當我關閉應用程序,並再次打開它,並按照相同的路徑,我可以看到該項目。 (當列表從數據庫中重新加載時)

那麼如何更新活動1中的列表?

我希望我能正確解釋我的問題(如果不是,請道歉!)。我不想把所有的代碼放在這裏,因爲代碼沒有問題,除非我的方法是錯誤的。

回答

1

把你的代碼從Activity.onResume()方法的數據庫中加載列表。這種方式應該在您的活動從不可見狀態恢復時執行(有關更多信息,請參閱活動生命週期中的the docs)。

另外,您可能想要使用Loader來實現從數據庫加載。它監視數據源的更新,從而使數據保持最新狀態。

+0

謝謝,這有幫助。因此,我可以將新對象放在Activity 2的'onStop()'中,並將其放入Activity 1的'onResume()'中並更新列表。我會嘗試! – rgamber

+0

@rgamber如果你的意思是「把對象放到'onStop()'」的數據庫中,那麼是的,就是這樣。 –

+0

因此,我現在使用'Loader'和'ContentProvider'進行數據庫操作,並在'Activity.onResume()'中添加了從數據庫加載列表的代碼,並解決了我的問題。但我仍然不確定這是做到這一點的最佳方式。基本上我現在正在訪問數據庫並重新加載完整列表以加載/更新一個新項目。我找不到如何在活動中使用'LoaderManager'來避免數據庫跳閘。可能我會回到這個問題! – rgamber