使用不同的游标填充微调器

时间:2012-06-18 23:33:56

标签: android database cursor spinner simplecursoradapter

我有一个微调器,我用数据库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 []中传递名称列,但也失败了。

感谢。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

无需做完整件事。

第一个微调器填充后只需关闭 光标

mycursor.close();

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