在Android中为Spinner添加“请选择”选项

时间:2013-04-23 19:21:50

标签: android spinner

我有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}}

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);