SQLite Daten in ListView (Gefüllte ListView mit leeren Zeilen)

  • Hallo, Ich will jetzt nicht sagen, dass ich am verzweifeln bin.... aber ich bin am verzweifeln :P


    Ich
    Habe ein SQLite DB erstellt und das funktioniert auch alles super, dann
    Daten eintragen und einzeln auslesen etc. aber ich scheitere bei dem
    Versuch, die Daten einer Abfrage korrekt in eine ListView zu bekommen.
    Es werden in der ListView zwar sie viele Zeilen angezeigt, wie ich
    Datensätze habe. Aber diese Zeilen sind Alle leer. Ich hoffe ihr könnt
    den Fehler in meinem Code entdecken:


    Das ist nur die Methode, durch die die ListView aktualisiert werden soll.



    Hauptsächlich habe ich mit diesem Tutorial gearbeitet:
    Der Umgang mit der SQLite-Datenbank


    Hab aber auch etliche andere Tutorials gelesen/geguckt und auf developers.android.com einige Beschreibungen durchgelesen.
    Leider hat es mir alles nicht geholfen.


    Ziel ist, dass nur die Daten der "name" Spalte in der ListView angezeigt wird.
    (der Toast ist nur zum prüfen da gewesen, ob wirklich Daten drin stehen")

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

    2 Mal editiert, zuletzt von Funtik ()

  • Hi Funtik,


    hast du dir das hier:

    Java
    final String ColNameName = theCursor.getString(1);


    mal ausgebe lassen?


    mmhh eigentlich wird das "db.close();" vorzugsweise in den Lebenslauf einer Activity eingebunden also entweder in onPause oder onStop.


    p.s. startManagingCursor(c); wurde von Google als nicht mehr zu benutzen markiert und wenn ich die ganze Sache richtig verstanden habe sollte man eh mit Content Provider arbeiten (hier noch ein Tut dafür)


    Mfg Titus

  • Ich danke dir für die Antwort.

    Zitat

    hast du dir das hier:

    Java
    final String ColNameName = theCursor.getString(1);


    mal ausgebe lassen?

    Ich habe beim Debugg Modus gerade gemerkt, dass dieser Teil scheinbar übersprungen wird. Jedenfalls hält der Debugger dort trotz Haltepunkt nicht an.
    Kann also nicht rein schaun


    Ich hab schon gesehen, dass startManagingCursor veraltet ist. Aber ich habe keine Alternative gefunden, die gut beschrieben ist :-/


    Ich werd mir mal das Tutorial die Tage durchlesen. Hoffe damit klappt es dann... ich hänge schon seit 4 Tagen an diesem Problem. Langsam geht mir die Motivation flöten :D



    Danke nochmal titus :)

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

  • Danke ChampS, das hab ich so auch schon verstanden. Dieses Wissen hat mir aber leider auch nicht weiter geholfen. :P


    Ich hab jetzt wieder neu angefangen mit dem Content Provider Tutorial. Bin noch nicht weit, aber bisher alles klar verständlich.



    Verstehe aber nicht, warum dieser SQLite Helper benutzt werden muss. Hat ja vorher bei mir auch ohne geklappt. Und das gute daran war sogar, dass ich dort

    Java
    db = this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);


    MODE_PRIVAT machen konnte. bei dem Helper weiß ich nicht, was er da macht.



    //Edit:


    Ich merke gerade, dass dieses Tutorial dafür ausgelegt ist, dass die Datenbank von anderen Apps aus erreichbar ist. Ich möchte das meine App "eingemauert" bleibt. Ich möchte diesen Content Provider Teil überspringen und versuchen mir das umzuschreiben. Ist das möglich? Ich fang einfach an es zu versuchen, hoffe aber auf baldige Antwort um nicht zu weit falsch zu laufen :)

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

    Einmal editiert, zuletzt von Funtik ()

  • Hi Funtik,


    Zitat

    "5.3. Security and ContentProvider
    By default a ContentProvider will be available to other programs. If you want to use your ContentProvider only internally you can use the attribute android:exported=false in the declaration of your ContentProvider in the AndroidManifest.xml file."


    Quelle: Android SQLite Database and ContentProvider - Tutorial - Vogella


    Zitat


    Verstehe aber nicht, warum dieser SQLite Helper benutzt werden muss. Hat ja vorher bei mir auch ohne geklappt. Und das gute daran war sogar, dass ich dort
    Java-Quelltext
    1 db = this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);


    MODE_PRIVAT machen konnte. bei dem Helper weiß ich nicht, was er da macht.


    Wie der Name schon sagt erstellst du mit "openOrCreateDatabase" nur eine DB mehr nicht um die Versionsverwaltung musst du dich dann selbst kümmern.
    Die Klasse SQLiteOpenHelper hingeben übernimmt auch die Versionsverwaltung".


    Außerdem lässt sich damit der ganze DB Kram schön in eine separate Klasse auslagern.


    mfg Titus

  • Also ich hatte einmal eine Datenbank ohne Helper und glaube mir, das ist ab einem bestimmten Umfang kein Spaß mehr. Das alles wird viel zu unübersichtlich :(

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Wow okay, Danke.
    Dann werd ich den Helper und den Content Provider beides doch benutzen.


    Von vorn anfangen muss ich trotzdem. Das ist ein reines chaos, was ich da jetzt hingeklatscht habe :D
    Danke euch. Hab wieder ein bisschen mehr motivation dafür...

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

  • @ Kogoro:


    Hast du auch kombinierte Abfragen gemacht, aus zwei Tabellen?


    Ich habe zwei Tabellen. Wahrscheinlich werden es sogar drei. Und ich muss da eventuell kombiniert drauf zugreifen. mit inner join und so.... wäre das jedenfalls in SQL. Mit diesem ContentProvider weis ich noch nicht. Ich steig da noch nicht ganz durch.
    rawQuerys sind für mich einfacher :D

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

  • Also mehrere Tabellen ja (insg. 5 mit völlig unterschiedlichen Daten und nur gleichem index). Inner join nicht ;)
    Ich habe es so gemacht, dass ich in der Helperclass alles verarbeitet habe in einer Methode. Das Ganze gibt dann einen Array zurück. Also einfach dann 5 mal eine DB-Abfrage und das Ganze zusammengefügt ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Okay. Klingt umständlich.


    Aber ich kann ja nicht erwarten in Java genauso zu programmieren wie in VBA :)


    Ich schätze ich hole mir doch erstmal ein video2brain Video für Android 4 (nachdem ich das Java7 Video durch habe). Und mache dann erst weiter mit der App.


    Ich danke euch für die Hilfe und Ratschläge.

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!