我有一个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);

10-05 20:02