2010-05-13 43 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表示事情已经改变,因此数据是脏的

您随时可以返回其他数值来表示什么,如果需要的究竟发生了变化。