我正在尝试在我的Activity中获得2个不同的ListView,以填充数据库内容onCreate。自从我添加代码以来,我现在因为标题中提到的错误而接近强制。
我不知道为什么会这样。
下面是代码:
currentList = (ListView)findViewById(R.id.list_current_day);
cursor = datasource.fetchCurrentLogs(dayExerciseDataID);
to = new int[] { R.id.listitem_log_reps, R.id.listitem_log_weight };
dataAdapterCurrent = new SimpleCursorAdapter(this, R.layout.listitem_log, cursor, columns, to, 0);
currentList.setAdapter(dataAdapterCurrent);
previousList = (ListView)findViewById(R.id.list_previous_day);
cursor = datasource.fetchPreviousLogs(dayExerciseDataID);
to = new int[] { R.id.listitem_log_reps, R.id.listitem_log_weight };
dataAdapterPrevious = new SimpleCursorAdapter(this, R.layout.listitem_log, cursor, columns, to, 0);
previousList.setAdapter(dataAdapterPrevious);
以下是数据库的结构和功能:
public Cursor fetchCurrentLogs(long dayExerciseDataID) {
// where day = today
Cursor cursor = database.rawQuery("select " + MySQLiteHelper.COLUMN_ID + "," + MySQLiteHelper.COLUMN_REPS + ", " + MySQLiteHelper.COLUMN_WEIGHT + " " +
"from " + MySQLiteHelper.TABLE_LOGS + " " +
"where " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + dayExerciseDataID + "'", null);
if (cursor != null) { cursor.moveToFirst(); }
return cursor;
}
public Cursor fetchPreviousLogs(long dayExerciseDataID) {
// where day = closest day from today
Cursor cursor = database.rawQuery("select " + MySQLiteHelper.COLUMN_ID + "," + MySQLiteHelper.COLUMN_REPS + ", " + MySQLiteHelper.COLUMN_WEIGHT + " " +
"from " + MySQLiteHelper.TABLE_LOGS + " " +
"where " + MySQLiteHelper.COLUMN_ID_DAY_EXERCISE + " = '" + dayExerciseDataID + "'", null);
if (cursor != null) { cursor.moveToFirst(); }
return cursor;
}
database.execSQL("create table " + TABLE_LOGS + " ("
+ COLUMN_ID + " integer primary key autoincrement,"
+ COLUMN_ID_DAY_EXERCISE + " integer not null,"
+ COLUMN_REPS + " integer not null,"
+ COLUMN_WEIGHT + " real not null,"
+ COLUMN_1RM + " real not null,"
+ COLUMN_DATE + " integer not null"
+ ")");
有人能说清楚为什么会这样吗?如果我错过了任何重要的代码,请告诉我,我会更新问题。
答案 0 :(得分:2)
尝试对两个列表使用不同的cursor
实例。
currentList = (ListView)findViewById(R.id.list_current_day);
cursor1 = datasource.fetchCurrentLogs(dayExerciseDataID);
和
previousList = (ListView)findViewById(R.id.list_previous_day);
cursor2 = datasource.fetchPreviousLogs(dayExerciseDataID);
答案 1 :(得分:0)
你必须以这种方式使用SimpleCursorAdapter
dataAdapterPrevious = new SimpleCursorAdapter(this, R.layout.listitem_log, cursor, columns, to);
而不是
dataAdapterPrevious = new SimpleCursorAdapter(this, R.layout.listitem_log, cursor, columns, to, 0);