【问题标题】:Binding data from a Cursor to a Spinner Android将数据从光标绑定到 Spinner Android
【发布时间】:2011-10-17 00:30:00
【问题描述】:

我正在尝试在 Android 对话框中填充 Spinner。当用户单击按钮时,会弹出一个对话框,我从 XML 文件加载布局。现在我正在尝试从 SQL 查询中填充该 Spinner。我已经搜索了所有内容,但无法弄清楚问题所在。我可以遍历游标并将每个值添加到 ArrayAdapter,然后将其用作微调器的列表,但数据库中的 _id 没有。我在使用 SimpleCursorAdapter 之前已经这样做了,我什至完全复制并粘贴了我的旧代码,但它仍然无法正常工作。任何帮助将不胜感激。

我的对话框代码:

private void displayNewInteractionDialog() {
        final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.mm_new_dialog);
        dialog.setTitle(R.string.mm_new_dialog_title);
        dialog.setCancelable(true);

        final Spinner spinner = (Spinner) dialog.findViewById(R.id.mm_spinner);

        DatabaseInterface db = new DatabaseInterface(this);
        db.open();

        Cursor c = db.getNames();

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            android.R.layout.simple_spinner_item,
            c,
            new String[] {DatabaseInterface.KEY_ID, DatabaseInterface.KEY_NAME}, 
            new int[] {android.R.id.text1});

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

        c.close();
        db.close();

        dialog.show();
}

这是在我的 DatabaseInterface 类中返回 Cursor 的代码:

public Cursor getNames() {
        return db.query(DATABASE_TABLE_4, new String[] {DatabaseInterface.KEY_ID, DatabaseInterface.KEY_NAME}, null, null, null, null, null);
    }

我知道这会起作用我只是显然错过了一些东西。我知道我可以使用上面提到的 ArrayAdapter 中的名称列表加载 Spinner,还可以使用查询中的 ID 填充一个数组,当用户选择一个项目时,我可以从 ID 数组中获取相应的项目...但我知道 SimpleCursorAdapter 会起作用我似乎无法弄清楚,我不会放弃,直到我这样做了哈哈。提前感谢您的帮助。

【问题讨论】:

  • 另外我忘了说我没有收到错误,列表只是返回为空。我知道查询正在工作并返回项目,因为我在设置适配器之前从光标打印出了项目。

标签: java android database cursor spinner


【解决方案1】:

看起来我很笨哈哈...出于某种原因,可能只是尝试了很多事情然后忘记删除我添加的部分。我刚刚删除了c.close();,现在一切都很好。我记得在我试图解决问题时补充说,我必须在其他地方解决问题,然后没有意识到,因为这条线仍然在那里。由于除了将光标传递给函数之外,我实际上并没有对光标做任何事情,因此不需要关闭它。无论如何,一切都很好,我知道这将是一件愚蠢的事情。像往常一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    相关资源
    最近更新 更多