Comment obtenir le paramètre EditText maxLength dans le code
Je voudrais voir la maxLength
d'un EditText
au moment de l'exécution pour être en mesure de faire un texte pour l'affichage de la décision.
Est-ce possible?
Voici une description de ce que je wan pas à faire.
J'ai une ListView avec beaucoup de lignes et chaque ligne a un EditText et un TextView.
J'ai fait une sous-classe de ArrayAdapter pour être en mesure de nourrir la Chaîne que je veux placer dans l'EditText de chaque ligne.
J'ai mis android:maxLength="12"
dans le fichier XML.
Je veux afficher un numéro de EditText champ, mais si le nombre je veux afficher a plus de android:maxLength="12"
je veux afficher un message d'erreur "" la place.
Et je préfère ne pas coder en dur ces 12 dans mon sous-classe de ArrayAdapter.
Il y a probablement une solution simple, mais je n'ai pas encore trouvé.
(android premier temps...)
source d'informationauteur Vincent Bernier
Vous devez vous connecter pour publier un commentaire.
Seulement limité de paramètres ont leurs accesseurs, donc je ne pense pas que vous puissiez le lire .
Afin d'écrire en longueur (Disons 12) dans les valeurs de dossier et de l'utiliser dans le xml de mise en page et arrayAdapter .
Maintenant ses pas codées en dur .
1)Créer integer.xml valeurs *
2)Dans la mise en page
3) dans ArrayAdapter :
Cela devrait fonctionner:
étendre le texte à modifier et récupérer la valeur de la attributeset dans le constructeur.
public class MyEditText s'étend EditText {
De l'api 21 vous pouvez le faire comme ça:
J'espère que cela aide quelqu'un.
Vous pouvez obtenir la valeur du Champ à l'aide de l'API Reflection.
Pourquoi Vous Ne devriez pas le faire
Juste au sujet de tout le monde serait plaider contre elle (moi y compris) parce que:
Dès maintenant, en regardant le code source (à l'API Android 19), la mise en œuvre dépend d'une
InputFilter.LengthFilter
qui est défini dans le constructeur:où
maxLength
est le nombre Entier que vous êtes intéressé à trouver, analysés à partir de l'attribut xml (android:maxLength="@integer/max_length"
).Cette
InputFilter.LengthFilter
a qu'un seul champ (private int mMax
) et aucune méthode d'accesseur.Comment Il Peut Être Fait
TextView
et au retour d'uneint
.InputFilter
ensemble sur leTextView
et de trouver l'un appartenant à l'InputFilter.LengthFilter
mise en œuvre.Ce serait vous donner quelque chose comme ceci:
Comme mentionné précédemment, cela va casser si la mise en œuvre qui définit la longueur maximale de la
TextView
changements. Vous serez informé de ce changement lorsque la méthode commence par lancer. Même alors, la méthode renvoie toujours -1, ce qui devrait être la manipulation longueur illimitée.Un peu compliqués, mais je ne sais pas de toute autre approche. J'espère que ça fonctionne (pas testé):