Ist es möglich, ListPreference-Elemente von einem Adapter zu laden?

8

Ich möchte eine Einstellungsaktivität für meine App erstellen. Ich habe ein PreferenceActivity mit einem schönen Layout einschließlich eines ListPreference Objekts definiert, damit der Benutzer ein Bluetooth Gerät auswählt. Ich habe Probleme beim dynamischen Auffüllen der Liste .

Ich möchte ListPreference mit Werten von einem Array-Adapter füllen (die ich erstellen und mit den entsprechenden Bluetooth-Gerätenamen füllen werde).

Wenn dies eine kreisförmige Ansicht wäre, könnte ich einfach setAdapter() aufrufen. Aber mit dem ListPreference -Objekt kann ich nicht herausfinden, wie man einen Adapter anhängt ( findviewByID wird nicht von View To ListPreference übertragen, so dass ich nicht einmal ein Handle für das Objekt bekommen kann).

Ich möchte einen Adapter anhängen und dann den Adapter mit Werten füllen, die wiederum ListPreference mit Werten füllen würden.

    
Brad Hein 29.05.2010, 23:15
quelle

4 Antworten

7

ListPreference funktioniert nicht mit Adaptern, es funktioniert mit Strings. Siehe setEntries() und setEntryValues()

Um zu Ihrem ListPreference zu gelangen, rufen Sie findPreference() auf. auf deinem PreferenceActivity . Wirf die Preference zurück in ListPreference .

    
CommonsWare 30.05.2010, 00:17
quelle
10

Für den speziellen Fall einer Liste von Bluetooth-Geräten können Sie die folgende Klasse verwenden:

%Vor%

Es kann direkt aus Ihren XML-Einstellungen eingebunden werden, um den MAC als eine Prefs-Zeichenfolge zu speichern:

%Vor%     
ge0rg 26.01.2011 02:25
quelle
4

Nur ein Update zu diesem Fall jemand anderes kommt, ge0rg Antwort funktioniert, aber änderte es ein wenig zu berücksichtigen, mehrere Vorlieben und nicht nur die Bluetooth-und auch, wenn sie nicht paar Geräte eingerichtet haben, so dass Sie nicht Erhalte einen Fehler mit einem Null-Array.

%Vor%

'Hoffe, das hilft jemandem ... oh und das ist unter der onCreate-Methode für die Präferenz-Aktivität

gestellt     
DRing 15.06.2011 22:03
quelle
4

Ein anderer Weg wäre, onPrepareDialogBuilder von ListPreference und initialisieren setSingleChoiceItems von AlertDialog.Builder direkt mit Ihrem Adapter:

%Vor%

Wenn Sie sich die Android-Quellen ansehen, werden Sie feststellen, dass onPrepareDialogBuilder () Folgendes aufruft:

%Vor%

mit diesen Eintragsarrays. Um ListPreference einige Adapter (z. B. ArrayAdaper, CursorAdapter) zu verwenden, müssen Sie nur aufrufen:

%Vor%

stattdessen.

Auf diese Weise wird ListPreference direkt auf dem Adapter ausgeführt und Sie müssen die Daten nicht vom Adapter kopieren, um sie in die Einträge-Arrays einzufügen.

Finden Sie ein funktionierendes Beispiel hier .

    
mf511 03.07.2013 10:00
quelle