2010-05-13 6 views
2

Comment obtenir les propriétés (modifiées) sales (toutes les sous-classes de contrôle de vue) parmi un certain nombre de propriétés sur une mise en page. Android a un drapeau sale pour marquer si la mise en page a un champ qui a un contenu changé?Android: Comment obtenir les propriétés sales (modifiées)

En fait, j'ai une mise en page qui a quelques edittexts, spinners, datewidgets.Maintenant faire une sauvegarde devrait faire une demande au serveur que si l'utilisateur a modifié quelque chose .Je voulais savoir comment puis-je vérifier si l'utilisateur a changé quelque chose dans cette mise en page ou pas. Est-ce que Android a un drapeau ou quelque chose qui se définit lorsque l'utilisateur modifie un contrôle d'entrée?

Hmm..Blckberry Possède la méthode isDirty() {boolean net.rim.device.api.ui.Manager.isDirty()}.

+1

Il pourrait être plus facile pour quelqu'un de répondre à votre question si vous expliquez ce que vous essayez d'obtenir un peu plus. –

Répondre

4

L'activité n'est pas étroitement liée aux éléments de votre mise en page, vous devrez donc le faire vous-même. Vous pouvez gérer une carte dans laquelle la clé est l'ID de l'élément de présentation et la valeur est un booléen qui signale si l'élément a été modifié par l'utilisateur. Vous devrez probablement configurer des écouteurs sur chaque élément (tel que OnKeyListener pour vos EditTexts) et capturer en plus leurs valeurs initiales.

+0

Yup riche, il semble que c'est le seul travail possible autour. Puis-je avoir un seul auditeur universel à chaque type de vue que j'ai dans ma mise en page, de sorte que si l'un d'eux change je pourrais installer le drapeau de manière appropriée événement ?? Ce serait un peu évolutif. –

+0

Ouais mec ... totalement. Vous pouvez conserver une collection de valeurs initiales et une collection des valeurs actuelles (pour effectuer des comparaisons) ou une collection d'indicateurs booléens représentant clean/dirty, les deux étant codés par l'ID d'élément. Vous avez une méthode d'assistance quelque part qui vérifie les changements. Ensuite, vous pouvez réutiliser une seule instance de chaque type d'écouteur dont vous avez besoin attaché à tous vos éléments d'interface utilisateur, et tout ce que fait l'écouteur appelle la méthode d'assistance. – Rich

+0

Merci riche .... –

0

Est-ce que Android a un drapeau sale pour marquer si la mise en page a un champ qui a un contenu modifié ??

Non, désolé.

0

Bit en retard avec ma réponse, mais la façon dont je le fais est de stocker les champs de formulaire (activité) dans un objet conteneur (pour la validation, etc). Cet objet conteneur implémente l'interface java.lang.Comparable, où T est la même classe que le conteneur.

La méthode compareTo (T) revient alors

  • 0 si les deux objets sont égaux (former ainsi le contenu n'a pas changé).
  • -1 indique que quelque chose a changé et donc les données est sale

Vous pouvez toujours revenir autres valeurs numériques pour indiquer exactement ce qui a changé si nécessaire.

Questions connexes