Autore Topic: Aggiungere item ad arrays.xml  (Letto 1215 volte)

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Aggiungere item ad arrays.xml
« il: 13 Dicembre 2010, 09:55:37 CET »
0
nel file arrays.xml ho la seguente situazione
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="listArray">
   <item>Value 1</item>
   <item>Value 2</item>
   <item>Value 3</item>
</string-array>
 
<string-array name="listValues">
   <item>1</item>
   <item>2</item>
   <item>3</item>
</string-array>
</resources>

come posso aggiungere/eliminare degli elementi da codice?
Let Your Brain Run Away

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aggiungere item ad arrays.xml
« Risposta #1 il: 13 Dicembre 2010, 10:33:30 CET »
0
Non puoi. Sono statici.
Se ti serve una cosa dinamica non ha senso utilizzarli ;)

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:Aggiungere item ad arrays.xml
« Risposta #2 il: 13 Dicembre 2010, 11:43:24 CET »
0
Ciao Ricky!
Eh ma se ho una listPreference cosa posso usare in alternativa agli array statici?


   
Codice (XML): [Seleziona]
             <ListPreference
                       android:title="Lista Indirizzi"
                       android:summary="Scelta indirizzo"
                       android:key="listPref"
                       android:defaultValue="digiGreen"
                       android:entries="@array/listArray"
                       android:entryValues="@array/listValues"
                       />
Let Your Brain Run Away

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #3 il: 13 Dicembre 2010, 11:47:27 CET »
+1
I metodi setEntries e setEntryValues!

ListPreference | Android Developers

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Aggiungere item ad arrays.xml
« Risposta #4 il: 13 Dicembre 2010, 11:47:46 CET »
+1
Se utilizzi la ListPreference via Java puoi fare un po' quello che vuoi ;)

ListPreference | Android Developers

Tu poi tranquillamente creare una parte del PreferenceScreen via xml e poi aggiungerci la ListPreference creata via Java.

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:Aggiungere item ad arrays.xml
« Risposta #5 il: 13 Dicembre 2010, 12:17:08 CET »
0
Grazie ragazzi :-)

mi serviva un qualcosa che mi permettesse di aggiungere dei nuovi valori in modo dinamico e mi sono arrangiato così se ci sono modi più eleganti fatemi un fischio :D

Codice (Java): [Seleziona]
        String[] chiavi={"GPS","Rende","Cosenza"}; //dai valori contenuti in queste chiavi
                                String[] valori={"GPS","via mico","via totti"};//agli id delle view
       
            lista.setEntries(chiavi);
            lista.setEntryValues(valori);
           
            String []chiaviNew= new String[chiavi.length+1];
           String []valoriNew=new String[valori.length+1];
           for(int i=0;i<chiavi.length;i++){
                   chiaviNew[i]=chiavi[i];
                   valoriNew[i]=valori[i];
           }
           
           chiaviNew[chiavi.length]="Milano";
           valoriNew[valori.length]="Via Montepaone 11";
                   
            lista.setEntries(chiaviNew);
            lista.setEntryValues(valoriNew);
Let Your Brain Run Away

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #6 il: 13 Dicembre 2010, 12:20:03 CET »
0
se ci sono modi più eleganti fatemi un fischio :D

Fiiiiiiiiiiiiiiiiiuuuuuuuuuuu!!!  o_O

Usa List invece di array!

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:Aggiungere item ad arrays.xml
« Risposta #7 il: 13 Dicembre 2010, 12:32:35 CET »
0
SetEntry accetta CharSequence[] non List<String>
oO mi sfugge qualcosa?
Let Your Brain Run Away

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #8 il: 13 Dicembre 2010, 12:41:07 CET »
0
No, non ti sfugge nulla... ma per inserire/modificare/eliminare oggetti è meglio usare una List invece di un Array. Appena hai finito ti basta richiamare il toArray della list per avere la CharSequence[] che ti serve.

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:Aggiungere item ad arrays.xml
« Risposta #9 il: 13 Dicembre 2010, 12:48:59 CET »
0
quello che dici è molto giusto ma ci ho provato e mi da Class Cast Exception

Codice (Java): [Seleziona]
ArrayList <String> chiavi=new ArrayList<String>();
        ArrayList <String> valori=new ArrayList<String>();

                chiavi.add("GPS");
                valori.add("GPS");
               
                lista.setEntries((CharSequence[]) chiavi.toArray());
                lista.setEntryValues((CharSequence[]) valori.toArray());
Let Your Brain Run Away

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #10 il: 13 Dicembre 2010, 13:20:05 CET »
0
Se crei un array list di String e fai un toArray di CharSequence è ovvio che vai in ClassCastException...

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #11 il: 13 Dicembre 2010, 13:21:35 CET »
0
lista.setEntries((CharSequence[]) chiavi.toArray(new CharSequence[0]));
                lista.setEntryValues((CharSequence[]) valori.toArray(new CharSequence[0]));


List (Java Platform SE 6)
[]%29
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #12 il: 13 Dicembre 2010, 13:25:14 CET »
0
lista.setEntries((CharSequence[]) chiavi.toArray(new CharSequence[0]));

Per essere precisi dovrebbe essere:
Codice (Java): [Seleziona]
lista.setEntries((CharSequence[]) chiavi.toArray(new CharSequence[chiavi.size()]));

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Aggiungere item ad arrays.xml
« Risposta #13 il: 13 Dicembre 2010, 13:29:12 CET »
0
Per essere precisi dovrebbe essere:
Codice (Java): [Seleziona]
lista.setEntries((CharSequence[]) chiavi.toArray(new CharSequence[chiavi.size()]));
Codice: [Seleziona]
Returns an array containing all of the elements in this list in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array. If the list fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this list.
Si, se lo fai come dici te ne alloca uno in meno, non sapevo,pensavo servisse solo per il tipo!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Sirio22

  • Utente junior
  • **
  • Post: 93
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7/8.1
Re:Aggiungere item ad arrays.xml
« Risposta #14 il: 13 Dicembre 2010, 14:37:28 CET »
0
grazie ragazzi ho dovuto fare comunque una base di dati per allocare dinamicamente i valori da inserire nella lista  o_O
Let Your Brain Run Away