2012-04-13 20 views
11

Ciao colleghi programmatori, ho un piccolo problema con l'attività Preferenze.Android - Come modificare dinamicamente i testi dell'attività delle preferenze?

http://developer.android.com/reference/android/preference/PreferenceActivity.html

Ho solo una categoria di preferenze e di una listPreference:

<?xml version="1.0" encoding="utf-8"?> 

<PreferenceCategory android:title="@string/basic_settings" > 
    <ListPreference 
     android:defaultValue="70" 
     android:entries="@array/listArray" 
     android:entryValues="@array/listValues" 
     android:key="updates_interval" 
     android:persistent="true" 
     android:summary="@string/SOME_SUMMARY" 
     android:title="@string/SOME_TITLE" /> 
</PreferenceCategory> 

ho bisogno di avere il valore selezionato (quello di default o l'utente definito uno) scritto nel sommario della listaPreferenza, per esempio: Avremo almeno 70 caratteri.

Come posso farlo dal codice?

ogni aiuto è apprezzato

risposta

24

Prova come questo ..

Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key 
customPref.setSummary("desired string"); 
+1

Grazie! :) Non ho visto il metodo findPreference. – user1332117

0

è possibile creare una sottoclasse di ListPreference in cui si imposta una OnPreferenceChangedListener da cui si avrà accesso al nuovo valore, e impostare il testo sul tuo ListPreference. Penso che la funzione setSummary() su ListPreference aggiornerà il testo sotto il nome della preferenza. Se ciò non funziona, puoi anche sovrascrivere getView() per implementare la tua vista personalizzata per le preferenze su cui è possibile impostare direttamente il testo.

1

ecco un breve esempio:

Preference etp = (Preference) findPreference("the_pref_key"); 
etp.setSummary("New summary"); 

Ciò richiede che si visualizzano le preferenze sia da un PreferenceActivity o da un PreferenceFragment, dal momento che findPreference() è un metodo di queste classi. Molto probabilmente lo fai già.

Per modificare il riepilogo ogni volta che l'utente modifica la preferenza effettiva, utilizzare OnPreferenceChangeListener e verificare se la chiave pertinente è stata modificata nella richiamata. Dopo che è cambiato, basta modificare il riassunto come sopra.

+0

Così facile! Grazie mille :) Ho perso il metodo findPreference ... – user1332117

Problemi correlati