使用带有setCursor的AlertDialog时正确管理游标

时间:2014-09-15 21:15:07

标签: android cursor android-alertdialog

请考虑以下代码:

private View.OnClickListener mTemplateButtonListener = new View.OnClickListener()
    {
        public void onClick(View view)
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(NewMailActivity.this);
            builder.setTitle(getString(R.string.str_new_mail_activity_choose_template));

            final Cursor c = MailData.getTemplateCursor();

            builder.setCursor(c, new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int item)
                {
                    c.moveToPosition(item);
                    et_body.setText(c.getString(c.getColumnIndex(MailData.TEMPLATES_TABLE_COL_BODY)));
                    et_subject.setText(c.getString(c.getColumnIndex(MailData.TEMPLATES_TABLE_COL_SUBJECT)));
                }
            }, MailData.TEMPLATES_TABLE_COL_SUBJECT);

            templatesAlertDialog = builder.create();
            templatesAlertDialog.show();
        }
    };

我用它来调出AlertDialog中的模板列表。

使用MailData.getTemplateCursor()加载数据的游标它向SQLite数据库查询数据。我无法弄清楚在哪里关闭光标的正确位置,因为如果我这样做 - 我不会得到任何数据。

有没有办法用ArrayList填充AlertDialog?

编辑:我找到了一个使用ListAdapter的解决方案,但它需要布局等,这使得它不必要复杂。还有其他方法吗?

0 个答案:

没有答案