1. quiddix, 17.03.2010 #1
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    ich erstelle mir momentan meine eigene Applikation und stehe nun vor dem Anbinden der Benutzeroberfläche an die Datenbank bzw. am Schreiben der Datenbankabfragen.

    Da ich momentan viel mit Eclipse RCP zu tun habe, ist meine Denkweise stark darauf fixiert und es fällt mir manchmal schwer mit den Eigenheiten von Android zurechtzukommen.

    Um meine Frage zu verdeutlichen, möchte ich zunächst ein Beispiel in normalne Java (und Eclipse RCP) geben, das ich ähnlich für meine Android Applikation umsetzten möchte.

    Dabei möchte ich Daten aus der Datenbank in einer Liste darstellen, und beim klicken eines Items die Daten dieses Items in einem separaten View bearbeiten.

    ---- Beispiel Vorgehensweise in Standard-Java ----
    1. Ich lade mir die Daten aus der Datenbank
    2. Ich definiere mir einen Contentprovider für die Liste
    3. Ich definiere mir einen Labelprovider für die Liste
    4. Ich setzte die geladenen Daten als Input für die Liste
    5. Ich füge einen selectionListener hinzu und hole mir das selektierte Objekt

    ---- Beispiel Vorgehensweise in Android Applikation ----
    1. Ich lade mir die Daten aus der Datenbank
    2. Ich definiere mir einen Adapter
    3. Ich übergebe dem Adapter bestimmte Daten, die ich in der Liste anzeigen will
    4. Ich füge einen onItemClickListener zur Liste hinzu

    Und genau jetzt kommt mein Problem. Ich bekomme über den Adapter nicht das selektierte Element / Objekt, sondern z.B. nur den Anzeigetext.

    Habe ich z.B. den Namen der Klasse Produkt zuvor dem Adapter übergeben, so habe ich nun nur den Namen zur Verfügung und müsste jetzt eine erneute Abfrage mit dem Namen starten, welche zudem mehrere Ergebnisse liefern könnte.

    Es wäre also gut, wenn ich bei der selektion die Id des Objekts zur Verfügung hätte, sodass ich es eindeutig identifizieren könnte.

    Hat jemand eine Idee wie ich das macht? Leider finde ich dazu keine Beispiele bzw. nur Beispiele die zu simpel sind um diesen Punkt zu beachten.

    Danke
     
  2. Shinigami, 17.03.2010 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Hi,

    lobenswert ausführlicher Post um Deine Problematik zu verdeutlichen.

    Welchen Adapter zum Binden der Daten an die Liste verwendest Du denn?

    Ich kenn's so:
    Verwendet man z.B. den SimpleCursorAdapter muss man dem Adapter einen Cursor übergeben in dem ein Datenfeld namens _id enthalten, welcher das Schlüsselfeld der Tabelle sein sollte. Implementiert man nun den onItemClick-Methode wird diese _id als Parameter (long id) mit übergeben und man hat seinen Datensatz eindeutig identifiziert. Oder liege ich komplett falsch?

    Gruß,
    Shini
     
  3. quiddix, 17.03.2010 #3
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    Hi,

    und ich dachte schon ich schreibe wieder zu ausführlich und keine hat dann Lust meinen Beitrag zu lesen.

    Ich habe gestern erste Datenbankabfragen für Spinner geschrieben. Nachdem ich dort auch auf dieses Problem gestoßen bin, habe ich durch Recherchen im Internet auch den SimpleCursorAdapter gefunden.

    Leider konnte ich dort noch nicht testen, was ich bei einem onItemClicked event zurückbekomme, ich denke jedoch dass es hier kein Problem sein sollte die ID ausfindig zu machen.

    Bei der Liste habe ich auf eine "Spezialimplementierung" die ich im Internet gefunden habe zurückgegriffen.

    Dort wird ein eigener Adapter (SeparatedListAdapter) aus verschiedenen Adaptern Kombiniert um eine Liste mit Kategorien zu erhalten: Jeff Sharkey Separating Lists with Headers in Android 0.9

    Deshalb werde ich hier wohl keinen SimpleCursorAdapter verwenden können.

    Meine Überlegung ist nun, in dem SpeperatedListAdapter eine Methode zum Hinzufügen von Listeeinträgen zu erstellen. Diese Methode bekommt den Listeneintrag und dessen ID als Parameter. Also z.B.:

    addListItem(int id, String lineToAdd);

    Intern füge ich das dann zum Adapter hinzu und speichere mir das ganze in einer HashMap. Wenn ich nun einen onListItemClicked Event fang, so kann ich in der HashMap die Ursprüngliche id des Listeneintrags erfahren und habe diesen identifiziert.

    Leider bin ich mit dieser Idee nicht ganz zufrieden, da so einige Fehler entstehen könnte (Einträge mit gleichen Namen etc.). Falls jemand für diesen Adapter oder allgemein deshalb eine andere Idee hat (best practice), wäre ich Ihm sehr dankbar.

    Gruß
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Frage zu den drawable-Ordnern Android App Entwicklung 20.05.2017
Und täglich grüßt die Quiz-App Frage (Vorgehensweise zur AppEntwicklung) Android App Entwicklung 15.02.2017
Frage zu Rekursives Ordner kopieren Android App Entwicklung 07.02.2017
Ein paar Fragen zu Permissions... Android App Entwicklung 18.01.2017
Eine Frage zum Aufbau. Android App Entwicklung 20.12.2016
eine Frage zum Brodcastreceiver.... Android App Entwicklung 18.11.2016
Android Quiz App bei falscher Frage soll sie angezeigt werden. Android App Entwicklung 23.10.2016
Frage zu GradientDrawale Android App Entwicklung 14.10.2016
Frage an alle Developer Android App Entwicklung 16.09.2016
Gefährliche Erlaubnis - Kann man die Frage auch anders formulieren? Android App Entwicklung 13.07.2016
Du betrachtest das Thema "Generelle Frage zu Databinding" im Forum "Android App Entwicklung",