1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. FireRider, 14.12.2010 #1
    FireRider

    FireRider Threadstarter Junior Mitglied

    Moin Leute

    Ich hab ein Problem und zwar hab ich eine ListView mit unbekannter Anzahl Einträge (Benutzer fügt sie selbst hinzu) und eine Datenbank (mit einer ID als Primary Key, autoincrement).
    Die Einträge kann man auch löschen, allerdings weiss ich nicht wie genau.
    Im moment mache ich es mit
    Code:
    myDB.execSQL("DELETE FROM " + TABLE_NAME + " WHERE titel = '" + titel + "';");
    Aber das löscht eben alle mit dem gleichen Titel.
    Ich habe es probiert mit der ID vom OnItemLongClickListener, aber die bringt nix, da die nachrückt wenn man in der ArrayList n Item löscht.

    Bsp:
    DB-ID's = 0, 1, 2, 3, 4
    ListView-ID's = 0, 1, 2, 3, 4

    Dann lösche ich Record Nummer 3 (ID 2)

    DB-ID's = 0, 1, 3, 4
    ListView-ID's = 0, 1, 2, 3, 4

    Weiss jemand wie man das lösen kann?

    Gruss, FireRider
     
  2. Lilithian, 15.12.2010 #2
    Lilithian

    Lilithian Android-Hilfe.de Mitglied

    Sind die Daten als Text im ListView oder machst du das mit einem SQLiteCursor? Wenn du es mit einem Cursor machst, kannst du dir über den Cursor die ID des Datenbankeintrags holen und diesen dann löschen.
     
  3. FireRider, 15.12.2010 #3
    FireRider

    FireRider Threadstarter Junior Mitglied

    Ich lese die Daten mit einem Cursor in eine ArrayList ein, die ich dann über einen ArrayAdapter an die ListView binde.
    Ich verstehe jetzt nicht genau wie du das meinst, müsste ich dann beim OnItemSelectedListener die Tabelle noch mal durchlaufen oder wie?
     
  4. Lilithian, 15.12.2010 #4
    Lilithian

    Lilithian Android-Hilfe.de Mitglied

    Wenn mich nicht alles täuscht gibt es doch auch sowas wie einen Cursoradapter für die ListView?

    Ja, gibt es. ^^
    CursorAdapter | Android Developers

    Wenn du den benutzen würdest, hättest du in jedem ListView Eintrag quasi einen Cursor drin, der auch die ID und alles enthält.
    Eine andere Möglichkeit wäre es, in der ArrayList die ID mit zu übergeben und die dann irgendwo unsichtbar in einem View abzuspeichern (im Tag oder unsichtbares Textfeld), die Möglichkeit ist aber nicht besonders schön wie ich finde und der CursorAdapter ist ja extra dafür da. ;)

    Beim Cursoradapter steht sogar bei "The Cursor must include a column named "_id" or this class will not work.", also wirst du da auch wohl problemlos auf die ID zugreifen können um den richtigen Eintrag zu löschen.
     
    FireRider bedankt sich.
  5. FireRider, 15.12.2010 #5
    FireRider

    FireRider Threadstarter Junior Mitglied

    Danke :D
    Werde ich heute mal probieren :)
     
  6. enrem, 17.12.2010 #6
    enrem

    enrem Erfahrener Benutzer

    Versuch es sonst mal nach dem löschen mit einem requery auf die Datenbank bzw. Cursor. Die ListView sollte danch ebenfalls benachrichtigt werden und sich aktualisieren.
     
  7. FireRider, 21.12.2010 #7
    FireRider

    FireRider Threadstarter Junior Mitglied

    Moin

    Habe es mit einem SimpleCursorAdapter probiert (auch mit ein paar Tutorials aus dem Inet) aber irgendwie hänge ich da noch.
    Mein jetziger Code sieht so aus (Noch ohne SimpleCursorAdapter):
    Code:
    ListView LV;
    List<CharSequence> List = new ArrayList<CharSequence>();
    ArrayAdapter<CharSequence> adapt = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_list_item_1,List);
    
    ....
    
    List.clear();
        	
    Cursor cur = myDB.rawQuery("SELECT _id,name FROM " + TABLE_NAME + ";",null);
    int Column = cur.getColumnIndex("name");
        	
    if (cur != null) {
        	if (cur.moveToFirst()) {
        		do {
        			String Name = cur.getString(Column);
            		List.add(Name);
        		} while (cur.moveToNext());
        			
        	}
            LV.setAdapter(adapt);
        }
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Eintrag in einer Datenbank mithilfe einer ListView löschen Android App Entwicklung 20.06.2018
Android Studio: Auf Datenbank mit zwei Spinner zugreifen. Android App Entwicklung 07.06.2018
SQLite Datenbank mit zwei Tabellen erstellen Android App Entwicklung 30.05.2018
Was am besten für eine Datenbank benutzen? Android App Entwicklung 26.02.2018
Eigene Web DB für App Inventor Android App Entwicklung 10.02.2018
Spinner item in Datenbank schreiben mysql Android App Entwicklung 23.12.2017
[OFFEN] Keine doppelten Einträge in die Firebase Datenbank Android App Entwicklung 27.10.2017
[OFFEN] Übereinstimmung Spracherkennung Datenbank finden Android App Entwicklung 13.10.2017
Du betrachtest das Thema "Records auf Datenbank eindeutig identifizieren" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.