【问题标题】:Populate spinner with different cursors使用不同的光标填充微调器
【发布时间】:2012-06-20 23:51:46
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: android database cursor spinner simplecursoradapter


    【解决方案1】:

    我解决了这个问题:

    /**
     * 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);
    }
    

    【讨论】:

      【解决方案2】:

      不需要做所有的事情。

      一旦第一个微调器被填充,只需关闭 光标

      mycursor.close();

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

      【讨论】:

        猜你喜欢
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        相关资源
        最近更新 更多