2016-03-27 12 views
0

My-Code iterieren einen CursorDaten abrufen von Cursor in Android

if (cursor.moveToFirst()) {                 
while (cursor.moveToNext()) {               
    String x = cursor.getString(cursor.getColumnIndex("event_name"));     
    System.out.println("Cursor ::::::" + x);            
    listViewModel.setEventDate(cursor.getString(cursor.getColumnIndex("event_date"))); 
    modelList.add(listViewModel);              
}                      

}

SJSO druckt:

Cursor ::::::android.support.v7.widget.AppCompatEditText{2e1dacdf VFED..CL ........ 0,73-1344,209 #7f0c006f app:id/eventName} 

Cursor zu holen Daten aus Db:

public Cursor getEvents(Domain dbOperations){ 
    database = dbOperations.getReadableDatabase(); 
    String[] columns = {TableInfo.TableDetails.EVENT_NAME, TableInfo.TableDetails.EVENT_DATE}; 
    Cursor cursor = database.rawQuery("SELECT event_name, event_date FROM events", null); 
    return cursor; 
} 

Kann jemand mir helfen, w zu bekommen Hat genau das in der Datenbank? Dank

+1

Es sieht so aus, als ob Sie die Rückgabe eines 'EditText # toString()' Aufrufs an die Datenbank speichern. Es sollte 'EditText # getText() # toString()' sein. Außerdem überspringt Ihre "while" -Schleife den ersten Datensatz im 'Cursor'. Verwenden Sie stattdessen ein "Do-While". –

+1

Danke Mike. Genau das habe ich gemacht .. !! Danke für den Vorschlag – Spark

Antwort

1

Wenn Sie auf die Datenbank einfügen:

contentValues.put("event_name", eventNameEditText.getText().toString()); 

Auch sollten Sie die Schleife ändern:

if (cursor.moveToFirst()) {                 
do {                
    String x = cursor.getString(cursor.getColumnIndex("event_name"));     
    System.out.println("Cursor ::::::" + x);            
    listViewModel.setEventDate(cursor.getString(cursor.getColumnIndex("event_date"))); 
    modelList.add(listViewModel);               
}while (cursor.moveToNext()); 

Es ist wegen der beim Aufruf moveToFirst() Methode der Cursor bereit ist, Daten zurück aus Zeile # 0. Wenn Sie sofort moveToNext() aufrufen, geht es in Zeile 1 und die erste Zeile wird übersprungen.