2009-11-21 34 views
4

新手问题。我使用的是SimleCursorAdapter填充从一个SQLite表中的微调,如在Android开发文档:Android如何从数据驱动的微调框中获取所选项目

Spinner list=(Spinner)findViewById(R.id.cboModel);   
SimpleCursorAdapter ModelAdapter = new SimpleCursorAdapter(this, 
    android.R.layout.simple_spinner_item, model, 
    new String[] {"Drug"},  
    new int[] {android.R.id.text1}); 
ModelAdapter.setDropDownViewResource(
     android.R.layout.simple_spinner_dropdown_item); 
list.setAdapter(ModelAdapter); 
list.setOnItemSelectedListener(onModelSelect); 

我已经建立了一个侦听器,但我无法弄清楚如何让选择项目文本,它拉起SQLiteCursor,而不是在微调框中的实际文本。

private AdapterView.OnItemSelectedListener 
    onModelSelect= new AdapterView.OnItemSelectedListener() { 
     public void onItemSelected(AdapterView<?> 
      parent, View view, int position, long id) { 
      ModelName = parent.getSelectedItem().toString(); 
      android.util.Log.w("OnItemSelect.cboModel", ModelName);  
     } 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub   
     }  
}; 

谷歌提出了几个留言板的问题,但没有答案,所以它似乎是一个常见的新手问题。对某些人来说这可能是很痛苦的,但如果你能指出我正确的方向,我将不胜感激。谢谢。通过调用的getString与列的索引

String id_string = String.valueOf(id); 

thismodel=Pkmodel.getById(id_string, dbModel); 

ModelName=thismodel.getDrug();   

回答

0

想通了......拿到ID,然后做一个DB查询在您用来填充微调器的原始数据库查询中。

String spinnerString = null; 
Cursor cc = (Cursor)(yourSpinner.getSelectedItem()); 
if (cc != null) { 
    spinnerString = cc.getString(
     cc.getColumnIndex("Drug")); 
} 

当从数据库填充Spinner时,此技术绝对有效。我还没有尝试过使用资源数组。

18

由于所选择的项目是一个光标,你可以很容易地获得价值:

+0

我尝试你的代码,但我得到错误: java.lang.ClassCastException:java.lang.String不能转换为android.database.Cursor – AmmY

相关问题