我有一个带有一些项目的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();
}
});
答案 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() { ... }
内的对话框扩充布局。