簡體   English   中英

保存Android Listview的高級狀態

[英]Saving advanced state of an Android Listview

我知道Android提供了一種機制,允許開發人員通過以下方法在Activity中保存和還原狀態:

protected void onSaveInstanceState (Bundle outState)
protected void onRestoreInstanceState (Bundle savedInstanceState)

我已經看到了許多示例,其中人們展示了如何保存簡單狀態(例如列表視圖中的當前索引),還有許多示例,人們在其中說列表視圖應僅由數據模型來支持,該數據模型將允許還原列表。 但是,當事情變得更加復雜並且用戶交互更加復雜時,我一直在努力尋找保存此狀態的正確方法。

我有一個listview,其中包含每行的自定義控件。 當單擊一行時,動畫將展開以向用戶顯示其他詳細信息...在其他詳細信息視圖中,用戶還可以更改某些內容。 現在我知道,如果銷毀了我的活動(或替換了我的片段),則反映用戶界面的當前狀態發生了變化,並且用戶與列表的交互現在丟失了。

我的問題是如何正確保存列表視圖的這種詳細狀態,以便還保留每個自定義組件行的狀態?

謝謝!

編輯:感謝您的以下答復。 我知道SharedPreferences可用於存儲鍵值狀態,但是,我想我對視圖狀態更感興趣。例如,Android將自動在其中保存/恢復EditText字段的視圖狀態(即其內容)。我的活動,那么如何在列表視圖中使用更復雜的自定義組件來實現相同的目的? 我是否真的必須親自手動保存此狀態(即,准確保存已擴展的listview行,保存用戶已進行/切換的所有ui更改,等等)?

我不確定,但我假設您可能正在尋找SharedPreferences

在onPause()方法中使用SharedPreferences

當活動數據移至后台時,您可以在其中存儲所有活動數據。

任何時候您都想從“共享首選項”中恢復數據。

我不想說這個,但是看來這必須自己完成。 該框架未提供用於“保存視圖狀態”的預制方法。

無論您保存在一個包或SharedPreferences的狀態,我認為這一點是需要確定的狀態變量,反映當前列表的選擇,堅持自己的他們,和onResume()你需要的是狀態重新引入您的活動。

正如您所說的,這是一個手動過程...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM