1

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)

4

1 に答える 1

1

カーソルを作成する場合、考えられる解決策の 1 つは、SQL UNION を使用して、必要なラベルだけを含む 2 番目の 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);
于 2013-04-23T19:36:58.473 に答える