W skrócie: Nie sądzę, że można, ale nie wydaje się być obejście: .
Jeśli spojrzysz na Zasób Androida tutaj:
http://developer.android.com/guide/topics/resources/string-resource.html
Widzisz, niż pod sekcją tablic (przynajmniej tablica ciągów), „REFERENCJA ZASOBÓW” (jak otrzymujesz z XML) nie określa sposobu adresowania poszczególnych elementów. Możesz nawet wypróbować w swoim XML użycie „@ array / yourarrayhere”. Wiem, że w czasie projektowania dostaniesz pierwszy przedmiot. Ale to nie ma praktycznego zastosowania, jeśli chcesz użyć, powiedzmy ... drugi, oczywiście.
JEDNAK istnieje sztuczka, którą możesz zrobić. Spójrz tutaj:
Odwoływanie się do ciągu XML w tablicy XML (Android)
Możesz „oszukiwać” (nie bardzo) definicję tablicy, adresując niezależne ciągi WEWNĄTRZ definicji tablicy. Na przykład w pliku strings.xml:
<string name="earth">Earth</string>
<string name="moon">Moon</string>
<string-array name="system">
<item>@string/earth</item>
<item>@string/moon</item>
</string-array>
Korzystając z tego, możesz normalnie używać „@ string / earth” i „@ string / moon” w polach XML „android: text” i „android: title”, ale nie stracisz możliwości korzystania z tablicy definicja do jakichkolwiek celów, które zamierzałeś w pierwszej kolejności.
Wydaje się, że działa tutaj na moim Eclipse. Dlaczego nie powiesz nam, czy to działa? :-)
name
tagi <item> s ... * westchnienie *strings.xml
ale nie została wprowadzona,values-fr
a tablica wciąż aktualizowana w wersji francuskiej. Tak źle ... ale fajnie, to działa!Może to pomogłoby:
Otrzymujesz listę tablic jako String [], a następnie wybierasz dowolne i, some_array [i].
źródło
String myPref = preferences.getString(context.getResources().getString(R.string.my_pref), some_array [0]);
gdzie mój_pref był wcześniej ustawiony na jakąś wartość some_array [x]Lepszą opcją byłoby po prostu użycie tablicy zwróconej przez zasoby jako tablicy, co oznacza:
getResources().getStringArray(R.array.your_array)[position]
Jest to skrótowe podejście do wyżej wymienionych podejść, ale działa w pożądany sposób. W przeciwnym razie Android nie zapewnia bezpośredniego indeksowania XML dla tablic opartych na XML.
źródło
Niestety:
Wydaje się, że nie można odwoływać się do pojedynczego elementu z tablicy w pliku values / arrays.xml za pomocą XML. Oczywiście możesz w Javie, ale nie XML. Brak informacji na ten temat w dokumentacji dla programistów Androida i nie mogłem znaleźć nigdzie indziej.
Wygląda na to, że nie można użyć tablicy jako klucza w układzie preferencji. Każdy klucz musi być pojedynczą wartością z własną nazwą klucza.
Co chcę osiągnąć: chcę móc przejść przez 17 preferencji, sprawdzić, czy element jest zaznaczony, a jeśli tak, załaduj ciąg z tablicy ciągów dla tej nazwy preferencji.
Oto kod, który miałem nadzieję, że wykona to zadanie:
Co ja zrobiłem:
Ustawiłem pojedynczy ciąg dla każdego z elementów i odwołałem się do pojedynczych ciągów w. Używam odwołania do pojedynczego ciągu dla tytułów pól wyboru układu preferencji i tablicy dla mojej pętli.
Aby przeglądać preferencje, nazwałem klucze takie jak key1, key2, key3 itd. Ponieważ odwołujesz się do klucza za pomocą łańcucha, masz możliwość „zbudowania” nazwy klucza w czasie wykonywania.
Oto nowy kod:
źródło
Innym sposobem na to jest zdefiniowanie tablicy zasobów w strings.xml, jak poniżej.
a następnie zdefiniowanie tablicy ciągów przy użyciu powyższych zasobów
Możesz również odwołać ten sam ciąg do innych plików XML, utrzymując DRY nietknięty. Zaletą, którą widzę, jest to, że zmiana jednej wartości wpłynie na wszystkie odwołania w kodzie.
źródło