2010-08-14 61 views
1

我需要在ListView/ListActivity中顯示來自SQL連接的結果。在ListActivity中顯示SQL連接的結果

我創建了一個光標:

Cursor cursor = db.rawQuery(LIST_JOIN_SQL, null); 

,如果我通過遊標循環,結果正是我期望的那樣。但是,當我嘗試使用SimpleCursorAdapter在ListView中顯示這些結果時,我得到一個運行時異常,因爲沒有名爲'id'的列。

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
R.layout.item, cursor, FROM, TO); 

,其中來自和TO被定義爲:

private static String[] FROM = { "name", }; 
private static int[] TO = { R.id.name, }; 

現在我想我可能使用了錯誤的方法在這裏,因爲它似乎SimpleCursorAdapters不是用於顯示連接的結果。

你會在這裏推薦什麼樣的方法?我僅限於使用Android 1.6 API。

回答

2

嘗試選擇你列一個爲_ID別名

select col1 as _id from table 
+0

完美解決方案 - 許多感謝。 – 2010-08-14 17:28:46

1

要使用CursorAdapter(或其任何子類),您需要具有「_id」列; it's explicitly stated in the documentation。這是因爲CursorAdapter大量使用這個列。

我建議是無論你想(根據您的項目),是這兩種路徑的簡單:

  1. 在一個表創建一個_id字段,這樣當你加入,你最終與一個_id字段。

  2. 實現您自己的ListAdapter(從BaseAdapter開始),它本質上是一個CursorAdapter,但不需要_id字段。

我懷疑#1會更容易些,如果你控制的數據庫做,但你必須做的#2,如果你不能改變數據庫的架構。