我正在尝试使用SimpleCursorAdapter来填充ListView。但是,构造SimpleCursorAdapter让我的编译器给我一个例外。最奇怪的是,我在应用程序的早期使用了几乎完全相同的结构。这就是我遇到的问题:
cursor = db.rawQuery("SELECT " + DatabaseHelper.KEY_AMOUNT
+ ", " + DatabaseHelper.KEY_DATE
+ " FROM " + DatabaseHelper.TABLE_HISTORY
+ " WHERE " + DatabaseHelper.KEY_ID
+ "=?",
new String[]{""+tenantId});
cursor.moveToFirst();
try {
tryAdapter = new SimpleCursorAdapter(
this,
R.layout.history_item,
cursor,
new String[] {DatabaseHelper.KEY_AMOUNT, DatabaseHelper.KEY_DATE},
new int[] {R.id.historyPaymentColumn, R.id.historyDateColumn});
} catch (Exception e) {
e.printStackTrace();
}
这是我之前在应用程序中使用的SimpleCursorAdapter的实例(有效的实例):
cursor = db.rawQuery("SELECT _id, firstName, lastName, phone FROM phonebook", null);
adapter = new SimpleCursorAdapter(
this,
R.layout.phonebook_item,
cursor,
new String[]{"firstName", "lastName", "phone"},
new int[] {R.id.firstName, R.id.lastName, R.id.phone});
setListAdapter(adapter);
有谁可以告诉我这两者之间究竟有什么区别导致tryAdapter
失败但是adapter
实例没有受到影响?
答案 0 :(得分:0)
我无法确定,因为您尚未发布Logcat
输出,但查看所选内容中的列名,似乎您未在投影中添加名为_ID
的列。传递给Cursor
的任何CursorAdapter
都必须包含名为“_id”的列,否则该类将无效。