Android Sqlite liefert letzten Datensatz einer Abfrage

T

theAydinator

Neues Mitglied
0
Hallo Forum,

danke dass du dieses Thema dir anschaust und ich hoffe du kannst mir weiterhelfen.

Ich möchte aus der Sqlite-Datenbank bestimmte Datensätze in eine ListView per einem CustomAdapter reinladen. Zur Abfrage dient die folgende Methode.

Code:
public ArrayList<Kapitel> getBittgebeteNachUnterkategorie(int unterkategorie_id) {
        
        hisnulmuslim_kapitel = new ArrayList<Kapitel>();
        
        kapitel = new Kapitel();
        
        hisnulmuslim_kapitel.add(kapitel);
        
        cursor = db.query(    DBHelper.TABLE_NAME_KAPITELN,
                            new String[] { DBHelper.ID_COLUMN , DBHelper.TITEL_COLUMN },
                            DBHelper.UNTERKATEGORIE_COLUMN + "=?",
                            new String[] { String.valueOf(unterkategorie_id) },
                            null, null, null, null);
        
        cursor.moveToFirst();
        do {
            int id = cursor.getInt(0);
            String titel = cursor.getString(1);

            kapitel.setId(id);
            kapitel.setTitel(titel);
        } while (cursor.moveToNext());
        
        return hisnulmuslim_kapitel;
    }
Fragment1.class
Code:
dbHelper.open();
        
        
        listView = (ListView) rootView.findViewById(R.id.listview_1);

        ArrayList<Kapitel> hisnulmuslim_kapitel = null;
        
        hisnulmuslim_kapitel = dbHelper.getBittgebeteNachUnterkategorie(2);
        
        adapter = new CustomAdapter(getActivity(),
                R.id.listview_1,
                hisnulmuslim_kapitel);
        
        listView.setAdapter(adapter);
        
        dbHelper.close();

Ergebnis des Codes: Letzter Datensatz der Abfrage

Liegt das Problem eventuell an der Abfrage oder an dem Adapter?

Vielen Dank im Voraus und beste Grüße
Aydin
 
Es liegt daran, dass du nur ein Kapitel erzeugst und zur Liste hinzufügst. In der do-while Schleife überschreibst du das Kapitel immer wieder und verlierst deshalb das vorherige.
 
Zoopa schrieb:
Es liegt daran, dass du nur ein Kapitel erzeugst und zur Liste hinzufügst. In der do-while Schleife überschreibst du das Kapitel immer wieder und verlierst deshalb das vorherige.

Verstehe, wie wäre in meinem Fall die richtigere Vorgehensweise?
Ich würde mich über einen Tipp freuen.
Danke schonmal!
 
Du erstellst nur eine einzige Kapitel-Instanz und fügst auch nur eine einzige deiner ArrayList hinzu...

Knackpunkt ist also, dass du folgendes nur einmal ganz am Anfang ausführst:

PHP:
kapitel = new Kapitel();
hisnulmuslim_kapitel.add(kapitel);

Du musst schon in deiner Schleife jedes einzelne Kapitel einer eigenen Instanz zuweisen und dann der ArrayList hinzufügen.
 
Danke für Eure Tipps, anbei der Code für die richtige Funktionalität:

Code:
public ArrayList<Kapitel> getBittgebeteNachUnterkategorie(int unterkategorie_id) {
        
        cursor = db.query(    DBHelper.TABLE_NAME_KAPITELN,
                            new String[] { DBHelper.ID_COLUMN , DBHelper.TITEL_COLUMN },
                            DBHelper.UNTERKATEGORIE_COLUMN + "=?",
                            new String[] { String.valueOf(unterkategorie_id) },
                            null, null, null, null);
        
        cursor.moveToFirst();
        do {
            kapitel = new Kapitel();
            
            int id = cursor.getInt(0);
            String titel = cursor.getString(1);

            kapitel.setId(id);
            kapitel.setTitel(titel);
            
            hisnulmuslim_kapitel.add(kapitel);
        } while (cursor.moveToNext());
        
        return hisnulmuslim_kapitel;
    }
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.016
swa00
swa00
B
Antworten
3
Aufrufe
1.309
swa00
swa00
D
  • Data2006
Antworten
14
Aufrufe
494
jogimuc
J
Zurück
Oben Unten