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[] 中仅传递名称列,但也失败了。

谢谢。

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

然后对第二个微调器重复相同的逻辑。

于 2013-10-01T10:32:03.100 回答