2011-07-31 49 views
1

我正試圖在Android對話框中填充微調器。當用戶點擊一個按鈕時,會彈出一個對話框,並從XML文件加載佈局。現在我正試圖從SQL查詢中填充該Spinner。我已經搜遍了,無法弄清楚問題所在。我可以遍歷Cursor並將每個值添加到ArrayAdapter,然後將其用作微調列表的列表,但不包含數據庫中的_id。在使用SimpleCursorAdapter之前,我已經完成了這個工作,我甚至完全複製並粘貼了舊的代碼,但仍然無法正常工作。任何幫助將非常感激。將數據從光標綁定到微調器Android

我的對話框代碼:

private void displayNewInteractionDialog() { 
     final Dialog dialog = new Dialog(this); 
     dialog.setContentView(R.layout.mm_new_dialog); 
     dialog.setTitle(R.string.mm_new_dialog_title); 
     dialog.setCancelable(true); 

     final Spinner spinner = (Spinner) dialog.findViewById(R.id.mm_spinner); 

     DatabaseInterface db = new DatabaseInterface(this); 
     db.open(); 

     Cursor c = db.getNames(); 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      android.R.layout.simple_spinner_item, 
      c, 
      new String[] {DatabaseInterface.KEY_ID, DatabaseInterface.KEY_NAME}, 
      new int[] {android.R.id.text1}); 

     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 

     c.close(); 
     db.close(); 

     dialog.show(); 
} 

這裏是我的DatabaseInterface類返回遊標代碼:

public Cursor getNames() { 
     return db.query(DATABASE_TABLE_4, new String[] {DatabaseInterface.KEY_ID, DatabaseInterface.KEY_NAME}, null, null, null, null, null); 
    } 

我知道這會工作,我只是失去了一些東西明顯。我知道我可以使用上面陳述的ArrayAdapter中的名稱列表加載Spinner,並使用查詢中的ID填充數組,並且當用戶選擇一個項目時,我只需從ID的數組中獲取相應的項目...但我知道SimpleCursorAdapter將起作用,我似乎無法弄清楚,我不會放棄,直到我做哈哈。預先感謝您的幫助。

+0

此外,我忘了說,我沒有收到錯誤,名單只是回來爲空。我知道查詢正在工作並返回項目,因爲我在設置適配器之前從光標打印出項目。 – DRiFTy

回答

3

看起來好像我是啞巴哈哈......出於某些原因,可能只是嘗試了很多事情,然後忘記刪除我添加的部分。我剛剛刪除c.close();,現在一切都很好。我記得補充說,因爲我試圖弄清楚事情的真相,而且我必須在其他地方解決問題,然後沒有意識到這一點,因爲這條線路還在那裏。因爲除了將它傳遞給一個函數外,我實際上沒有對Cursor做任何事情,因此它不需要關閉。無論如何,一切都很好,我知道這將是一件愚蠢的事。像往常一樣。

+0

你並不孤單:) –