1

データベースの sqlite 列からカーソルを移入するスピナーがあります。これは問題なく動作しますが、理想的ではありません。列を選択してスピナーに表示する別のスピナーを追加しましたが、これはアダプターを作成するときの問題です。これは私のコードです:

    cursor = myDB.obtenerColumna(getBaseContext(),elemento);   
    String[] columns = new String[] { "_id", "columna", "columnb", "columnc", "columnd" };
    menudesplegable.setPrompt(getText(R.string.seleccionaEtiqueta)); 

   SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item,cursor,
            columns, new int[] {android.R.id.text1});    

    adapter.setDropDownViewResource
            (android.R.layout.simple_spinner_dropdown_item);       

データベースから列を正しく取得しますが、他の列からカーソルを渡すと、アプリはアダプターの構築に失敗します。String[] で name 列のみを渡そうとしましたが、失敗しました。

ありがとう。

4

2 に答える 2

0

私はこれを解決しました:

/**
 * Crea el menú desplegable para seleccionar tiqueta.
 */
public void construirMenuDesplegable(String elemento) {
    // get items of database using selected element in other spinner
    cursor = myDB.obtenerColumna(getBaseContext(), elemento);
    menudesplegable.setPrompt(getText(R.string.seleccionaEtiqueta));

    // Create adapter
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item, cursor,
            new String[] { elemento }, new int[] { android.R.id.text1 });

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // Indicate adapter
    menudesplegable.setAdapter(adapter);

    try {
        myDB.close();
    } catch (Exception e) {
        Log.e("miError", "Error al cerrar db", e);
    }
}

/**
 * Build spinner for select a element for show in other spinner.
 */
public void construirMenuDesplegable2() {
    // Create adapter
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
            this, R.array.listables, R.layout.custom_spinner);
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Indicate adapter
    menudesplegable2.setAdapter(adapter2);
}
于 2012-09-22T23:49:19.287 に答える
0

すべてを行う必要はありません。

最初のスピナーが読み込まれたら、カーソル閉じます。

mycursor.close();

次に、同じロジックを 2 番目のスピナーに繰り返します。

于 2013-10-01T10:32:03.100 に答える