Android Sqlite liefert letzten Datensatz einer Abfrage

  • 4 Antworten
  • Letztes Antwortdatum
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

M
Antworten
21
Aufrufe
1.362
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
967
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.006
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
790
mkuz24
M
A
Antworten
5
Aufrufe
696
swa00
swa00
Zurück
Oben Unten