2011-01-31 10 views
7

Mam formularz z wieloma EditTextami, a kiedy naciśniesz pewien przycisk, muszę pobrać wszystkie te kontrolki i umieścić je w HashMap, więc klucz jest nazwą (key1 int z następującego kodu)Jak odzyskać xml id EditText

<EditText android:id="@+id/key1" 
     style="@style/keys" /> 

oraz wartość, bez względu na tekst wprowadzany przez użytkownika.

Moje pytanie brzmi: jak mogę pobrać nazwę EditText dla kluczy Hashmap? getId() zwraca liczbę.

Dzięki

+1

Do czego zamierzasz użyć tej nazwy? Metody takie jak 'findViewById()' przyjmują ID 'int' jako parametr. –

+0

Czyj findViewById? Wypróbowałem te z EditText, ScrollView i utworzyłem Layout i wszystkie z nich zwracają odwołanie do EditText (na przykład [email protected]). – xain

Odpowiedz

2

W końcu rozwiązałem to za pomocą tagu android: i getTag()

3

Android generuje uchwyt dla tego widoku w R.java gdy budować swój projekt. Na przykład, po zbudowaniu możesz uzyskać dostęp do EditText, dzwoniąc pod numer R.id.key1. Nie musisz przechowywać identyfikatorów w dowolnym miejscu, ponieważ możesz uzyskać bezpośredni dostęp do identyfikatora w dowolnym momencie kodu. Z tym identyfikatorem można zadzwonić pod numer findViewById() jako dave.c. Wymaga to uzyskania dowolnego widoku z pliku XML.

+0

Dziękuję za odpowiedź. Co się stanie, jeśli będę musiał wysłać klucz/wartość pary do usługi sieciowej? W takim przypadku klucz musi być zawsze taki sam, a najlepiej "czytelny", tak jak ma to miejsce w formularzach internetowych. – xain

+1

@Xain: Jeśli chcesz, aby zawsze był taki sam, musisz się upewnić, że go nie zmienisz. Ty jako programista masz pełną kontrolę nad identyfikatorem. Mówiąc to, unikam używania identyfikatora do klucza do usługi sieciowej. Zamiast tego użyłbym czegoś w rodzaju publicznego statycznego ciągu zgrupowanego z innymi kluczami usług internetowych - być może w klasie statycznej, takiej jak WebServiceKeys. Identyfikatory widoku nie są przeznaczone do tego celu. – McStretch

+0

Cóż, nie masz ** pełnej ** kontroli nad identyfikatorem, ponieważ Android generuje identyfikator 'int' dla ciebie, a te mogą się zmieniać wraz z dodawaniem i usuwaniem elementów. Zgadzam się, że @xain powinien zachować własne klucze dla tych danych wejściowych. –

0

W rzeczywistości, getId() jest liczbą całkowitą identyfikatorów składników, jest takie samo jak opisane w klasie generowanej przez R.

Potrzebujesz prawdziwego imienia, jak pisałeś? Jeśli potrzebujesz tylko odniesienia, wartość int jest wystarczająca.

+0

Dzięki za odpowiedź, przeczytaj wątek z poprzedniej odpowiedzi. – xain