E/CursorWindow: Failed to read row 0, column -1 from a CursorWindow which has 2 rows, 2 columns.
I am getting this when trying to use my ListView adapter. I am not sure why this is happening.
My ASync background task:
protected String doInBackground(String... params) {
databaseOperations databaseOperations = new databaseOperations(ctx);
String method = params[0];
if(method.equals("getInfo")) {
listView = (ListView)activity.findViewById(R.id.list);
SQLiteDatabase db = databaseOperations.getReadableDatabase();
Cursor cursor = databaseOperations.getInfo(db);
itemAdapter = new ItemsAdapter(ctx, R.layout.display_todo_row);
String name, desc, time;
Log.d("columns:", String.valueOf(cursor.getColumnCount()));
while(cursor.moveToNext()){
name = cursor.getString(cursor.getColumnIndex(ItemData.ItemInfo.taskName));
desc = cursor.getString(cursor.getColumnIndex(ItemData.ItemInfo.taskDesc));
time = cursor.getString(cursor.getColumnIndex(ItemData.ItemInfo.taskTimestamp));
Item item = new Item(time, name, desc);
publishProgress(item);
}
return "getInfo";
}
return null;
}
My DBOperation.
public class databaseOperations extends SQLiteOpenHelper{
public static final int databaseVersion = 1;
public String createQuery = "CREATE TABLE " + ItemData.ItemInfo.tableName+" ("+ ItemData.ItemInfo.taskName+" TEXT,"+ ItemData.ItemInfo.taskDesc+" TEXT,"+ ItemData.ItemInfo.taskTimestamp+" TEXT);";
public databaseOperations(Context context) {
super(context, ItemData.ItemInfo.databaseName, null, databaseVersion);
Log.d("Database operations", "Database was succesfully created");
}
@Override
public void onCreate(SQLiteDatabase sdb) {
sdb.execSQL(createQuery);
Log.d("Database operations", "Database was succesfully created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public Cursor getInfo(SQLiteDatabase db){
String[] projections = {ItemData.ItemInfo.taskName, ItemData.ItemInfo.taskDesc};
Cursor cursor = db.query(ItemData.ItemInfo.tableName, projections, null, null, null, null, ItemData.ItemInfo.taskTimestamp + " ASC");
return cursor;
}
public void insertData(databaseOperations dop, String name, String desc, long timestamp){
SQLiteDatabase SQ = dop.getWritableDatabase();
ContentValues CV = new ContentValues();
CV.put(ItemData.ItemInfo.taskName, name);
CV.put(ItemData.ItemInfo.taskDesc, desc);
String timestampString = Long.toString(timestamp);
CV.put(ItemData.ItemInfo.taskTimestamp, timestampString);
long k = SQ.insert(ItemData.ItemInfo.tableName, null, CV);
Log.d("Database operations", "Data was successfully inserted.");
}
}
Aucun commentaire:
Enregistrer un commentaire