2014-12-04 53 views
0

我有一個列表視圖與一些項目。我試圖爲everey項目實現「編輯」選項,用戶可以通過對話框更改項目字段的文本。當用戶單擊項目佈局中的按鈕時會顯示該對話框,因此通過listView的適配器內部的button.onClickListener(...)調用該對話框。在AlertDialog中自動填充EditText

我的問題是,我想向用戶顯示對話框中的項目的當前信息,所以我做了一堆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

我認爲這會工作..試試這個

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); 
0

buttonEditar.setOnClickListener(new View.OnClickListener() { ... }的內部爲對話框填充佈局。