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

ThKildau
Antworten
0
Aufrufe
64
ThKildau
ThKildau
asconsulting
Antworten
5
Aufrufe
189
LonelyGremlin
LonelyGremlin
Katharina1985
Antworten
9
Aufrufe
628
Anz
Anz
M
Antworten
21
Aufrufe
1.818
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
1.149
migi01
migi01
Zurück
Oben Unten