2011-11-17 47 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()));