Android - SimpleCursorAdapter抛出异常

问题描述:

我想使用SimpleCursorAdapter来填充ListView。但是,构造SimpleCursorAdapter让我的编译器引发了一个异常。最奇怪的是,在我的应用程序中,我几乎使用了几乎完全相同的结构来取得巨大成功。这就是我有问题:Android - 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实例不变?

+3

它为什么不起作用?什么是例外?所以你最好在这里发布'Logcat'输出。 – 2012-03-07 04:45:42

我无法确定,因为您还没有发布您的Logcat输出结果,但查看您选择的列名称,似乎您没有在投影中包含名为_ID的列。您传递给CursorAdapter的任何Cursor都必须包含名为“_id”的列,否则该类将不起作用。

+0

这样做。谢谢! – 2012-03-07 21:14:38