2012-03-07 11 views
0

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(); 
    } 

そして、ここでは、私は先の出願(作品1)で使用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); 

誰も私に何を伝えることができます正確にはこれらの2つの違いによってtryAdapterが失敗しますが、adapterインスタンスは変更されません。

+3

なぜ機能しないのですか?例外は何ですか?だからあなたは 'Logcat'の出力をここに投稿してください。 –

答えて

0

Logcatの出力は投稿していませんが、選択した列の名前を見てもわからない場合は、投影に_IDという名前の列は含まれていないようです。あなたがCursorAdapterに渡すすべてのCursorには、 "_id"という名前の列を含める必要があります。そうしないと、クラスが機能しません。

+0

それはそれをしました。ありがとう! –

関連する問題