在AlertDialog中自动填充EditText

时间:2014-12-04 12:59:24

标签: android listview dialog

我有一个带有一些项目的listView。我正在尝试实施"编辑" everey项目的选项,用户可以通过对话框更改项目字段的文本。当用户单击项目布局中的按钮时,将显示该对话框,因此通过listView适配器内的button.onClickListener(...)调用该对话框。

我的问题是我想向用户显示对话框中项目的当前信息,所以我在视图中创建了一堆EditText,我想在创建对话框时填充项目的当前数据,让用户删除他想要的字段(我的意思是,editTexts)中的文本,并在其中写入新文本。但是,由于我在对话框(new AlertDialog.Builder(getActivity()).setView(view))中膨胀视图,第二次用户尝试编辑项目时,我的应用程序崩溃,因为对话框中的膨胀view已经有父项。我不想删除该视图的父级,因为我在button.onClickListener(...)外面查看视图,因为我希望当前数据出现在对话框的创建中。

我该怎么做?

这里有一些代码,希望它足够:

我的片段中的ListView适配器:

public class ContactosAdapter extends ArrayAdapter<Contacto> {  //This is an inner class inside myFragment

    ...

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ...

        inflater = LayoutInflater.from(context);
        view = inflater.inflate(R.layout.dialog_nuevo_contacto, null);

        ...

        buttonEditar.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                AlertDialog dialog = new AlertDialog.Builder(getActivity()).setView(view).setTitle(R.string.editar_contacto).setPositiveButton(R.string.aceptar, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {

                    ...

                    }

                }).setNegativeButton(R.string.cancelar, null).setCancelable(false).create();
                dialog.show();

            }
       });

2 个答案:

答案 0 :(得分:1)

我认为这样可行..试试这个

    AlertDialog.Builder alert_with_edittext = new AlertDialog.Builder(MyActivity.this);
    LayoutInflater inflater=MyActivity.this.getLayoutInflater();

将布局添加到警告对话框

    View layout=inflater.inflate(R.layout.dialog,null);       
    alert.setView(layout);
    final EditText item_form_list =(EditText)layout.findViewById(R.id.dialog_edittext);

答案 1 :(得分:0)

buttonEditar.setOnClickListener(new View.OnClickListener() { ... }内的对话框扩充布局。