2012-11-16 38 views
4

我有一個數據庫與表「mytable」有2 colums「id」,「sampletext」 我想查詢sampletext的不同值,並使用SimpleCursorAdapter飼料給微調。在Spinner中使用SimpleCursorAdapter?

這裏是試圖

String[] cols=new String[]{"sampletext"}; 
int[] lbls=new lbls[]{android.R.id.text1}; 
mycursor=sdb.query(true,"mytable", cols,null,null,null,null,null,null); 
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, cols,lbls,0); 
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spn.setAdapter(sca); 

當我運行這個我在第4行出現錯誤:ID不存在。 當我將第一行改爲「id」時,微調器被填充了id值。 但我需要「sampletext」,我做錯了什麼? 欣賞任何建議

回答

12
what am i doing wrong 

你沒有閱讀文檔...

有串的兩列的列:首先在查詢中使用的,第二次是在適配器構造函數(您只使用一個陣列都)

第一個告訴哪些列應採取光標源碼,第二告訴適配器哪些應該顯示/映射到單排查看...

下一頁CursorAdapter需要Cursor與列名爲_id

所以現在很明顯,我們應該做的smthin這樣的:

String[] queryCols=new String[]{"_id", "sampletext"}; 
String[] adapterCols=new String[]{"sampletext"}; 
int[] adapterRowViews=new int[]{android.R.id.text1}; 
mycursor=sdb.query(true,"mytable", queryCols,null,null,null,null,null,null); 
sca=new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, mycursor, adapterCols, adapterRowViews,0); 
sca.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spn.setAdapter(sca); 
+0

對不起生根粉的是,應該有更多的正確檢查文檔..我沒有錯誤,但有一個不同的邏輯問題。由於_id是一個主鍵,當我使用查詢DISTINCT我結束了遊標中的所有行。有什麼建議麼? – Deepak

+0

不要抱歉:)我明白,需要時間來獲得有關新平臺的知識...我希望這個答案對你有幫助:) – Selvin

+0

它很難說如果我們不知道我們如何能夠幫助你什麼'sdb.query'確實......我很確定'sdb'不是'SQLiteDatabase'的一個實例,而是它的某種你自己的幫助類 – Selvin

1

下面是與原始查詢的例子。請注意查詢返回的第一個ID列應該標記爲_id

MyDatabase.java:

public class MyDatabase extends SQLiteAssetHelper { 
    ... 
    public Cursor getListNamesForDropDown() { 
     SQLiteDatabase db = getReadableDatabase(); 
     String sql = "select ID _id, Name from MyTable order by Name "; 
     Cursor c = db.rawQuery(sql, null); 
     c.moveToFirst(); 
     return c; 
    } 

MyActivity.java:

 @Override 
     public void onCreate(Bundle savedInstanceState) { 
....  
      Cursor cursorTest = db.getListNamesForDropDown(); 
      android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, 
        android.R.layout.simple_spinner_item, 
        cursorTest, 
        new String[] {"Name"}, 
        new int[] {android.R.id.text1}, 0);  
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinnerTest.setAdapter(adapter); 
0
android.widget.SimpleCursorAdapter adapter = new android.widget.SimpleCursorAdapter(this, 
      android.R.layout.simple_spinner_item, 
      cursor, 
      new String[] { DBOpenHelper.ACCOUNT_BANK }, 
      new int[] { android.R.id.text1 }, 0); 

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
相關問題