Autore Topic: PreferenceActivity - utilizzare un array di stringhe non in Res  (Letto 416 volte)

Offline BobArctor

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero, Galaxy S4, GP50
  • Play Store ID:
    Michele Valentini
  • Sistema operativo:
    Windows 8
PreferenceActivity - utilizzare un array di stringhe non in Res
« il: 02 Settembre 2013, 12:10:46 CEST »
0
Ciao ragazzi...
ho iniziato a creare una PreferenceActivity per il mio programma, e il primo campo di cui ho bisogno (l'unico fin'ora ma ne verranno altri) è un dialog box che permette di scegliere tra gli n campi di un'array di stringhe. il problema è:
non posso dichiarare staticamente questo array perchè viene generato in base ad alcune risorse del device in uso all'avvio del programma, e non cambierà piu fino al prossimo utilizzo.
come posso richiamarlo? per ora ho creato la PreferenceActivity utilizzando xml, e richiamando semplicemente quel "layout" con addPreferencesFromResource(R.xml.settings);
L'array è accessibile tramite un getter della mia estensione di Application.
per ora ho un Button che si occupa di tale dialog nella main activity, ma dato che i settings aumenteranno a breve preferirei spostare il tutto.
grazie <3
Michele

Offline matttt

Re:PreferenceActivity - utilizzare un array di stringhe non in Res
« Risposta #1 il: 02 Settembre 2013, 12:16:28 CEST »
0
Puoi tenerti un riferimento all'adapter collegato al View che propone la lista di stringhe (list, dropdown, etc.) e prima di richiamare il dialog imposti gli elementi della lista come vuoi... clear(), add(), etc.
Le mie apps su Google Play Store:

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:PreferenceActivity - utilizzare un array di stringhe non in Res
« Risposta #2 il: 02 Settembre 2013, 13:11:31 CEST »
0
Se ho ben capito vorresti una ListPreference "dinamica".
Potresti:
- crearti la MiaListPreference estendendo la ListPreference e valorizzando opportunamente Entries e EntryValues.

- aggiungere la lista in modo programmatico alle altre preference. Qualcosa di questo tipo da mettere nella PreferenceActivity
     
Codice (Java): [Seleziona]
        ListPreference myListPref = new ListPreference(this);
        listPref.setKey("key");
        listPref.setEntries(xxx);
        listPref.setEntryValues(xxx);
       
        //add to preferenceScreen or category
        //....

- recuperare nell'onCreate la tua listpreference e modificarne il contenuto (questo un pò lo sconsiglio). Qualcosa del tipo:
Codice (Java): [Seleziona]
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
        listPreference = (ListPreference) findPreference("xxxx");

        listPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                setListPreferenceData(listPreference);
                return false;
            }
        });
    }

    protected static void setListPreferenceData(ListPreference listPreference) {
            lp.setEntries(xxxx);
            lp.setDefaultValue(xxx);
            lp.setEntryValues(yyyyyy);
    }

Offline BobArctor

  • Nuovo arrivato
  • *
  • Post: 36
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero, Galaxy S4, GP50
  • Play Store ID:
    Michele Valentini
  • Sistema operativo:
    Windows 8
Re:PreferenceActivity - utilizzare un array di stringhe non in Res
« Risposta #3 il: 02 Settembre 2013, 15:22:14 CEST »
0
grazie!!! ho risolto ;)