2014-10-16 60 views
1

我填充,使其具有了一些使用下面的代碼從我SQLite數據庫記錄:如何使用simplecursoradapter通過id定位(選擇)特定項目上的微調框?

DBHelper db = new DBHelper(getBaseContext()); 
    Cursor cursor_clients = db.select("clients", "_id, name", "ORDER BY name"); // table, fields, filter/order 

    String[] columns = new String[] { "name" }; 
    int[] to = new int[] { android.R.id.text1 }; 

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor_clients, columns, to, 0); 
    mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    Spinner spnClients = (Spinner) findViewById(R.id.spnClients); 
    spnClients.setAdapter(mAdapter); 

它的偉大工程,我可以使用

spnAcademias.getSelectedItemId();

獲取所選記錄的_id。我的問題是:如何通過_id選擇此微調器上的項目?

我有我想要的行的_id,我希望它顯示選定的行,而不是來自查詢的第一行。

回答

2

做更多的研究,我結束了這裏的解決方案:setSelection on Spinner based on rowId

我想也許有沒有環的本地解決方案,但沒有。

解決方案:

public void setSpinnerItemById(Spinner spinner, int _id) 
{ 
    int spinnerCount = spinner.getCount(); 
    for (int i = 0; i < spinnerCount; i++) 
    { 
     Cursor value = (Cursor) spinner.getItemAtPosition(i); 
     long id = value.getLong(value.getColumnIndex("_id")); 
     if (id == _id) 
     { 
      spinner.setSelection(i); 
      break; 
     } 
    } 
} 
0

如果你能很容易地得到你正在尋找該行的文本值,然後在這裏嘗試的解決方案,更具體在它的頂部評論:Set selected item of spinner programmatically

使用以下:spinnerObject.setSelection(INDEX_OF_CATEGORY2)。

...

...我還發現越來越索引,而不需要遍歷適配器的方式。我使用了以下mySpinner.setSelection(arrayAdapter.getPosition(「Category 2」));

+0

我已經似乎是解決辦法,但我想選擇通過_id和項目沒有名字。 – 2014-10-17 13:19:16

相關問題