我有一个Spinner
,它是使用SimpleCursorAdapter
从查询中填充的,可以正常使用...但是现在我需要在从查询中检索到的所有项目之前放置一个“请选择”选项,以解决可用性问题。 ..但我不太确定该怎么做...请帮助...
这是我的代码...
private Spinner comboForm;
...
comboForm = (Spinner) findViewById(R.id.comboFormularios);
...
mDbH.abrir();
final Cursor cu = mDbH.consultaFormularios(idU);
if(cu.moveToFirst() == false){
cu.close();
mDbH.cerrar();
}else{
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(getApplicationContext(),R.layout.spinner,cu,new String[] {"nombre"},new int[] {R.id.textoCombo});
adapter2.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
comboForm.setAdapter(adapter2);
}
mDbH.cerrar();
...
comboForm.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parentView, View selectedItemView,int position, long id) {
idF = (int) id;
obtenerDatosRutas(idU,idF);
tabla.removeAllViews();
llenarTabla();
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
其中
mDbH
是我用来操纵Database
...的类的实例,如您所见,Spinner
是由查询consultaFormularios(idU)
生成的游标填充的 最佳答案
创建游标时,一种可能的解决方案是使用SQL UNION并构造仅包含所需标签的第二个SELECT(添加硬编码的虚拟字段以进行排序)。
或者,这很可能是最简单的解决方案。不要使用游标适配器,而要使用数组适配器,并首先使用所需的默认值填充数组,然后粘贴游标中的所有项目。就像是,
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("Please select");
final Cursor cu = mDbH.consultaFormularios(idU);
while(cu.moveToNext()) {
arrayList.add(cu.getString(0)); // assuming you want a
//string from the first column
}
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, arrayList);
comboForm.setAdapter(spinnerArrayAdapter);