2011-11-17 16 views
1

我正在使用微調讓用戶在創建和更新對話框中選擇數據庫關係(1:n)。填充與數據庫遊標微調正常工作:Android:從光標填充數據集ID Spinner

//set up spinner 
    Spinner spinner = (Spinner) dialog.findViewById(R.id.field_task_fkbudget); 
    //set up cursor 
    budgetsData = new TBTsqlHelperBudgets(this);   
SQLiteDatabase db = budgetsData.getReadableDatabase(); 
    Cursor c2 = db.query(TBTsqlHelperBudgets.TABLE,null,null,null,null,null,null);   
    c2.moveToFirst(); 
    // populate spiner 
    SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c2, new String[] {TBTsqlHelperTasks.KEY_NAME}, new int[] {android.R.id.text1}); 
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter2); 
    spinner.setSelection(0); 

我現在的問題是儲蓄的選擇到數據庫。我試圖使用:

... 
    caller.updateTask(task_id, field_name.getText().toString(), s.getSelectedItemPosition()); 
    ... 

但這給了我在微調框內的數據集位置。我需要的是在微調器中選擇的遊標元素的字段BaseColumns._ID的內容。

有沒有更好的方法來接收這個比用數據庫上的字符串匹配進行另一次選擇?

回答

0

設置一個OnItemSelectedListenerSpinner和方法內

onItemSelected(AdapterView<?> parent,View view, int pos, long id) 

你所選項目的id,保存此id在類級別的變量

(可以說:long selectedId),然後當在數據庫中選擇

caller.updateTask(task_id, field_name.getText().toString(), selectedId); 
0

我想我終於找到了ni ce解決方案:

caller.updateTask(task_id, field_name.getText().toString(),s.getItemIdAtPosition(s.getSelectedItemPosition()));