[android] Fare riferimento a una stringa in una risorsa array di stringhe con xml


1 Answers

Forse questo aiuterebbe:

String[] some_array = getResources().getStringArray(R.array.your_string_array)

Quindi ottieni l'array-list come String [] e poi scegli i i, some_array [i].

Question

Ho preferenze in cui è possibile abilitare / disabilitare quali elementi verranno visualizzati nel menu. Ci sono 17 articoli Ho creato una serie di stringhe in valori / arrays.xml con titoli per ciascuno di questi 17 elementi.

Ho preferenze.xml che ha il layout per il mio file delle preferenze, e vorrei fare riferimento a un singolo elemento dell'array di stringhe da usare come titolo.

Come posso fare questo?

Nel riferimento agli sviluppatori Android, vedo come posso fare riferimento a una singola stringa con XML, ma non a come posso fare riferimento a una stringa da una risorsa di matrice in XML.




Purtroppo:

  • Sembra che non puoi fare riferimento a un singolo elemento da un array in valori / arrays.xml con XML. Certo che puoi farlo in Java, ma non in XML. Non ci sono informazioni su come farlo nel riferimento agli sviluppatori Android, e non ho trovato nessun altro.

  • Sembra che tu non possa usare un array come chiave nel layout delle preferenze. Ogni chiave deve essere un singolo valore con il proprio nome di chiave.

Cosa voglio realizzare: voglio essere in grado di scorrere le 17 preferenze, controllare se l'elemento è selezionato e, se lo è, caricare la stringa dall'array di stringhe per quel nome di preferenza.

Ecco il codice che speravo avrebbe completato questo compito:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());  
ArrayAdapter<String> itemsArrayList = new ArrayAdapter<String>(getBaseContext(),   android.R.layout.simple_list_item_1);  
String[] itemNames = getResources().getStringArray(R.array.itemNames_array);  


for (int i = 0; i < 16; i++) {  
    if (prefs.getBoolean("itemKey[i]", true)) {  
        itemsArrayList.add(itemNames[i]);  
    }  
} 

Cosa ho fatto:

  • Ho impostato una singola stringa per ciascuno degli elementi e ho fatto riferimento alle singole stringhe nel file. Uso il riferimento a stringa singola per i titoli della casella di controllo del layout delle preferenze e l'array per il mio loop.

  • Per scorrere le preferenze, ho appena chiamato i tasti come key1, key2, key3, ecc. Poiché si fa riferimento a una chiave con una stringa, si ha la possibilità di "creare" il nome della chiave in fase di runtime.

Ecco il nuovo codice:

for (int i = 0; i < 16; i++) {  
        if (prefs.getBoolean("itemKey" + String.valueOf(i), true)) {  
        itemsArrayList.add(itemNames[i]);  
    }  
}



Related