2010-05-13 42 views
2

如何在佈局上的多個屬性中獲取髒(更改)的屬性(任何控件的子類)。 android有一個髒標誌來標記佈局是否有任何有更改內容的字段?Android:如何獲取髒(已更改)屬性

其實,我有一個佈局,有幾個edittexts,spinners,datewidgets.Now做一個保存應該向服務器發出請求,只有當用戶修改了任何東西。我想知道如何檢查用戶已經改變了該佈局中的任何內容。android有沒有標誌或者什麼東西在用戶修改任何輸入控件時自行設置?

嗯..Blckberry有isDirty(){boolean net.rim.device.api.ui.Manager.isDirty()}方法。

+1

如果你解釋你想要做的更多,你可能會更容易回答你的問題。 – 2010-05-13 14:29:20

回答

4

該活動與您的佈局中的元素沒有緊密耦合,因此您必須自己執行此操作。您可以維護一個Map,其中的關鍵字是佈局元素的id,值是一個布爾值,表示元素已被用戶修改過。您可能需要在每個元素上設置偵聽器(例如EditTexts的OnKeyListener)並捕獲它們的初始值。

+0

是富有的,它似乎是唯一可能的解決方案。我可以沒有一個通用的偵聽器來訪問我的佈局中的每種類型的視圖,這樣如果它們中的任何一個都可以更改,我可以在編輯時適當地設置標記事件??這將有點可擴展性。 – 2010-05-13 15:33:41

+0

是啊,人...完全。您可以保留一組初始值和一組當前值(用於進行比較)或一組表示乾淨/髒的布爾標誌,這兩個鍵都由元素標識符來控制。你有一個輔助方法可以檢查變化。然後,您可以重複使用您需要連接到所有UI元素的每種類型偵聽器的單個實例,並且所有偵聽器都會調用輔助方法。 – Rich 2010-05-13 16:50:12

+0

謝謝豐富.... – 2010-05-14 02:44:33

0

是否android有髒標記 如果佈局有任何字段有 更改內容?

不,對不起。

0

我的回答遲了一點,但我這樣做的方式是將表單(活動)字段存儲在容器對象(用於驗證等)。這個容器對象實現了java.lang.Comparable接口,其中T與容器相同。

的的compareTo(T)方法然後返回

  • 0,如果兩個對象是相等的(從而形成內容沒有改變)。
  • -1表示事情已經改變,因此數據是髒的

您隨時可以返回其他數值來表示什麼,如果需要的究竟發生了變化。