AlertDialog.setItems

P

PsychoCat

Neues Mitglied
0
Hallo!

Bevor ich mich dumm und dämlich suche, kann mir ja vll hier jemand einen Tipp geben. Ich habe einen AlertDialog erstellt und dem builder per setItems eine Liste übergeben. Diese Liste ist einfach ein CharSequence[].
Nun möchte ich aber, den Objekten der Liste nicht nur ihren Inhalt fürs display übergeben, sondern sie sollen zumindest noch eine ID (und vll sogar noch weitere Eigenschaften) erhalten. Dazu müsste ich wahrscheinlich etwas komplexeres als besagte CharSequence übergeben? Beim Anklicken möchte ich jedenfall nicht einfach nur den Namen und die Position in der Liste erhalten, sondern eben auch die ID.

Notfalls könnte man natürlich ein assoziatives Array erstellen (wobei ich mit den ganzen array-artigen Strukturen durcheinander komme: map,hashmap,array,list...), das jedem Namen die entsprechenden Eigenschaften zuordnet und beim anklicken lese ich das dann wieder aus. Erscheint mir aber umständlich und Namen müssen nicht immer eindeutig sein (im Gegensatz zur ID).

Danke euch!
 
Hmm diese Seite kenne ich, aber bin ich noch nicht schlau draus geworden.

Vll erst nochmal zum Verständnis, was ich will:
Sagen wir ich habe 3 Namen, "Bernd", "Andi" und noch ein "Bernd". Diese haben IDs 4,18 und 25. Jetzt möchte ich diese 3 Namen im AlertDialog haben und wenn ich auf einen Namen klicke soll beispielsweise eine zentrale Variable auf die entsprechende ID gesetzt werden.
Damit die ID zurückgegeben werden kann, muss diese ja erstmal an den builder übergeben werden. Bisher kann ich aber nur diesen Array von CharSequence übergeben.

Unter deinem link finde ich 3 Methoden, die passend erscheinen: 2mal setItems, die erste benutze ich ja, bei der zweiten wird nur ein int übergeben!? und setAdapter, die einen ListAdapter erwartet.
 
Genau, du könntest es so implementieren, dass du anhand des ints, den du übergibst, in deinem Dialog eine Abfrage startest und somit eine entsprechende Ressource ziehen.

Hier ein Code-Schnipsel von einer meiner Anwendungen, damit du dir eine Vorstellung machen kannst, wie ich es meine^^

Code:
public void showAftermathDialog(String champ, String duration, int state) {
        Drawable icon = null;
        if (state == FACT.GAMEOVER_WINNER_STATE) icon = getResources().getDrawable(R.drawable.winner_icon);
        if (state == FACT.GAMEOVER_LOSER_STATE) icon = getResources().getDrawable(R.drawable.loser_icon);
        if (state == FACT.GAMEOVER_OPPONENT_LEFT) icon = getResources().getDrawable(R.drawable.left_icon);

        final AlertDialog.Builder dialog = new AlertDialog.Builder(this)
                .setTitle(getResources().getString(R.string.dialog_gameover_title))
                .setMessage(champ + " Die Spielzeit: " + duration + " sek.").setIcon(icon);
[...]
 
Zurück
Oben Unten