我有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
填充了Cursor得到的查询{ {1}}
答案 0 :(得分:1)
创建光标时,一种可能的解决方案是使用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);