1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

AlertDialog - "checkedItem"

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von enjoy_android, 03.07.2009.

  1. enjoy_android, 03.07.2009 #1
    enjoy_android

    enjoy_android Threadstarter Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
    Hallo zusammen.

    Ich verwende einen AlertDialog mit "singleChoiceItems" die aus einem ArrayAdapter gespeist werden. Dieser Adapter verändert sich die ganz Zeit und die Nutzer können einen Item aus der veränderten Liste wählen. Haben sie einen Item verwendet verschwindet dieser aus der Liste.

    Nun habe ich folgendes Problem. In onCreateDialog kann ich den "checkedItem" (Item der vorausgewählt ist) setzen. Wenn ich den Dialog erneut aufrufe wird dieser vom System wiederverwendet und nur noch "onPrepareDialog" aufgerufen. Nun stellt sich mir die Frage wo ich den "checkedItem" im Falle der Wiederverwendung setzen kann. Setze ich diese Position nicht wird immer, die zuletzte selektierte Position, als checked angezeigt. Was in meinem Fall aber ungünstig ist, da dieser Item ja nicht mehr in der Liste vorhanden ist. Ich würde gerne immer den ersten Item auswählen. (unabhängig vom zuletzt gewählten)

    Kann mir einer sagen wie ich in "onPrepareDialog" den "checkedItem" setzen kann? Geht das überhaupt? Bis jetzt habe ich keine Möglichkeit gefunden diese Position bei Wiederverwendung des Dialogs zu beeinflussen.

    Ich wäre über jede Hilfe dankbar. :)

    Gruß und Danke.
     
  2. enjoy_android, 03.07.2009 #2
    enjoy_android

    enjoy_android Threadstarter Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
    Das ganze geht wohl nicht. Deswegen habe ich es nun anders gelöst und verwende keine "singleChoiceItems" mehr. Ich setze den Adapter per "setAdapter" im Dialog und dann passt alles. :)
     
  3. miracle2k, 03.07.2009 #3
    miracle2k

    miracle2k Android-Hilfe.de Mitglied

    Beiträge:
    89
    Erhaltene Danke:
    15
    Registriert seit:
    03.07.2009
    Einmal kannst du komplett auf onCreateDialog/onPrepareDialog verzichten und den Dialog selbst anzeigen. Dabei verlierst du allerdings natürlich die eingebaute Funktion, dass der Dialog beim Orientation Change erhalten bleibt, bzw. müsste die selbst einbauen.
    OnPrepareDialog hat in Beziehung leider übrigens auch einen bösen Bug: Issue 1639 - android - onPrepareDialog is not called on orientation change - Google Code

    Ansonsten ein paar Ideen:

    Nachdem du einen Adapter verwendest, kannst du nicht den Adapter aktualisieren, d.h. adapter.notifyDataSetChanged()?

    Falls die Checkboxen nicht über den Adapter gefüllt werden, müsste das trotzdem möglich sein (via eigene Adapter-Subklasse, oder ViewBinder verwenden).

    Vielleicht kannst du auch einfach die Checkboxen manuell ändern, also via dialog.getListView() oder eventuell dialog.findViewById().
     
  4. enjoy_android, 03.07.2009 #4
    enjoy_android

    enjoy_android Threadstarter Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
    Nach allem Testen hätte ich den Dialog selber bauen müssen und keinen Alert Dialog verwenden können. Den Bug kenne ich auch, er ist in Donut schon gefixt. Leider hatte notifyDataSetChanged() keine Auswirkung auf die Checkbox. Im Endeffekt mache ich es jetzt ohne Checkboxen was für meinen Fall auch ok ist.
     

Diese Seite empfehlen