2012-04-13 22 views
11

Witajcie, programiści, mam mały problem z aktywnością Preferencji.Android - Jak dynamicznie zmieniać teksty w aktywności preferencji?

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

Mam tylko jedną kategorię preferencji i 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> 

muszę mieć wybraną wartość (jeden domyślny lub zdefiniowane przez użytkownika) napisane w podsumowaniu listyPreferencja, dla przykład: Będziemy mieć co najmniej 70 znaków.

Jak mogę to zrobić z kodu?

Każda pomoc jest mile widziana

Odpowiedz

24

Spróbuj tak ..

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

Dzięki! :) Nie widziałem metody findPreference. – user1332117

0

Można utworzyć podklasę ListPreference w którym ustawisz OnPreferenceChangedListener z którego będziesz mieć dostęp do nowej wartości i ustaw tekst na liście ListPreference. Myślę, że funkcja setSummary() na liściePreferencji zaktualizuje tekst pod nazwą preferencji. Jeśli to nie zadziała, możesz również zastąpić metodę getView() w celu zaimplementowania własnego niestandardowego widoku dla preferencji, w którym możesz ustawić tekst bezpośrednio.

1

Oto krótki przykład:

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

wymaga, aby wyświetlać swoje preferencje albo z PreferenceActivity lub z PreferenceFragment, ponieważ findPreference() jest metodą z tych klas. Najprawdopodobniej już to robisz.

Aby zmienić podsumowanie za każdym razem, gdy użytkownik zmieni rzeczywiste preferencje, użyj numeru OnPreferenceChangeListener i sprawdź, czy odpowiedni klucz został zmieniony w wywołaniu zwrotnym. Po zmianie, edytuj podsumowanie jak powyżej.

+0

Tak łatwo! Wielkie dzięki :) Brakuje mi metody findPreference ... – user1332117

Powiązane problemy