1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  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 gefällt das.
  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
[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
[OFFEN] Komplette SQLite Datenbank verschlüsseln Android App Entwicklung 19.09.2017
[OFFEN] Updateinstallation: Trotzdem Datenbank gelöscht Android App Entwicklung 12.05.2017
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[ERLEDIGT] Datenbank in eine Cloud sichern (Backup) Android App Entwicklung 29.03.2017
Wie bekomme ich Map Markers von einer SQL Datenbank Android App Entwicklung 11.03.2017
Class (Datenbank) nur einmal instanzieren Android App Entwicklung 23.02.2017
SQLite - Idee 'zentrale Datenbank' theoretisch möglich (und ratsam)? Android App Entwicklung 21.02.2017
ListView Element an eine Datenbank senden Android App Entwicklung 04.12.2016
Du betrachtest das Thema "Records auf Datenbank eindeutig identifizieren" im Forum "Android App Entwicklung",