在我的Android应用程序中,我有一个与Spinners的布局。我想要做的是给第一个微调器中的一个选定项,填满第二个。
第一个微调器从游标(数据库查询的结果)中填充,如下所示:
Spinner combo1 = (Spinner) findViewById(R.id.combo1);
mDbH.open();
Cursor c1 = null;
c1 = mDbH.consulta4();
startManagingCursor(c1);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c1,new String[] {"nombre"},new int[] {android.R.id.text1});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
combo1.setAdapter(adapter);
这很好用!问题出现在我的事件监听器中:
combo1.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String est = String.valueOf(combo1.getSelectedItem());
int idEst = (int) id;
Log.e("est",est);
Log.e("idEst",""+idEst);
mDbH.open();
Cursor c = null;
c = mDbH.consulta5(idEst,est);
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(getApplicationContext(),android.R.layout.simple_spinner_item,c,new String[] {"nombre"},new int[] {android.R.id.text1});
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
combo1.setAdapter(adapter2);
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
因为,在LogCat中行Log.e(“est”,est);显示了这个:
10-25 09:48:50.390: E/est(3462): android.database.sqlite.SQLiteCursor@40625638
当然,这个值不在我的数据库中,第二个游标是空的,微调器没有填满任何东西!所以,这是我的问题,当从数据库中填充时,如何从微调器中选择项目?我也试过了:
String est = combo1.getSelectedItem().toString();
和
String est = parentView.getItemAtPosition(position).toString();
但结果是一样的!!难道我做错了什么?请帮忙!
谢谢!
答案 0 :(得分:3)
由于Spinner
使用SimpleCursorAdapter
,getItemAtPosition
&amp; getSelectedItem
将返回Cursor
引用。使用:
Cursor c=(Cursor) combo1.getSelectedItem();
String est=c.getString(c.getColumnIndex("nombre");
同样适用于getItemAtPosition(position)