ListView - nur eine Zeile

  • Antworten:4
  • Bentwortet
lampenlampen
  • Forum-Beiträge: 15

16.03.2016, 13:35:52 via Website

Hallo,

ich hab ein Problem mit meiner ListView.
Und zwar speichere ich Daten in einer Datenbank und dann in einer ListView ausgeben. DIes habe ich auch schon in einer extra App geschaftt und wollte dies nun in meine HauptApp übertragen, wobei jetzt nur noch der erste Eintrag in der ListView angezeigt wird. Ich habe bereits sichergestellt, dass die Daten beim Anlegen in die Datenbank gespeichert werden, da ich die einzelnen Zeilen auslesen kann. Zum Auslesen benutze ich den SimpleCursorAdapter:

private void populateListViewfromDB()
{
Cursor cursor = dbAdapter.getAllRows();
startManagingCursor(cursor);
String[] fromFieldNames = new String[] {DBAdapter.KEY_FIRSTNAME, DBAdapter.KEY_SURNAME};
int[] toViewIDs = new int[] {R.id.listview_textview_firstname, R.id.listview_textview_surname};
SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this, R.layout.items_in_textview, cursor, FromFieldNames, toViewIDs);
listview.setAdapter(myCursorAdapter);
}`

public Cursor getAllRows()
{
String where = null;
// db ist die SQLiteDatabase und DATABASE_TABLE der Tabellenname, ALL_KEYS ist ein Array mit allen Datenbankfeldern
Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, where, null, null, null, null, null);
if(c != null)
{
c.moveToFirst();
}
return c;
}`

Ich schätze, dass in diesen beiden Methoden der Fehler sein muss, da ja die erste Zeile immer angezeigt wird.

Bei weiteren Fragen bitte melden

Vielen Dank im Vorraus

Edit: die Quellcode Funktion funktioniert irgendwie nicht. in meiner Vorschau zeigt er es mir als Quellcode an, aber beim Posten dann nicht mehr.
Grüße

— geändert am 16.03.2016, 13:37:16

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

16.03.2016, 13:49:50 via Website

Lesen kann man es ja trotzdem ;)

Hast du den SimpleCursorAdapter selber Programmiert als Klasse mit adapter Extension oder bnutzt du den aus der Android API?
Bei zweiterem musst du das Layout ander manchen.

Bisher hast du:

SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this, R.layout.items_in_textview, cursor, FromFieldNames, toViewIDs); 

Dabei ist das Layout das hier:
R.layout.items_in_textview

Aber der normale Adaapter au der Android API will das so:
android.R.layout.simple_list_item1

Die frage ist warum nur ein einziger Eitrag angezeigt wird,das kann ich dir nicht sagen.
Und warum lässt du den Curser überhaupt zum ersten Element gehen?
Das kann doch der Adapter schon alleine oder nicht?

Hast du überprüft ob die Daten im Cursor passen ankommen, also ob der Select nur eine oder alle zeilen zurückliefert?

LG Pascal //It's not a bug, it's a feature. :) ;)

lampenlampen

Antworten
lampenlampen
  • Forum-Beiträge: 15

16.03.2016, 13:58:21 via Website

Also ich hab das ganze aus einem Tutorial und dann eben für meine Sachen angepasst.
Das komische ist eben auch, dass ich das ganze in einer extra App ausprobiert habe, ob es funktioniert und da funktioniert alles.
Und von der Datenbank-Logik hab ich beim übernehmen nicht viel geändert.
Das einzige, was mir jetzt noch einfällt, ich habe beim ersten Ausprobieren eine EmptyActivity erstellt und eine ListView drin platziert. Und jetzt habe ich eine ScrollingActivity erstellt. Vielleicht hat es etwas damit zu tun.

Ich probier mal, ob er alle Daten in einer leeren Activity mit ListView anzeigt.

Trotzdem vielen Dank

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

16.03.2016, 14:02:56 via Website

ScrollView und ListView vertrage sich nicht.
Nimm nur die ListView und werf die ScrollView raus, dann klappt es vielleicht.

LG Pascal //It's not a bug, it's a feature. :) ;)

lampenlampen

Antworten
lampenlampen
  • Forum-Beiträge: 15

16.03.2016, 14:04:56 via Website

Genau hab ich auch gerade bemerkt.
Habs mit einer normalen ListView getestet und es hat funktioniert.
Schade des Layout war ganz schön :(

Danke

— geändert am 16.03.2016, 14:10:56

Pascal P.

Antworten