2012-07-16 65 views
3

我想創建一個視圖,用戶可以在其中單擊「加號」按鈕並創建其他EditTexts。目標是擁有2個EditTexts基礎,並且每次用戶單擊該按鈕時,添加另外2個EditTexts。Android:在運行時創建EditText

我怎樣才能做到這一點?我可以從Java添加EditTexts,但我無法弄清楚如何動態地添加和處理它們的列表。

我希望能夠接受多對EditTexts,並將其推送到鍵/值HashMap或其他東西。

任何想法如何做到這一點?謝謝!

回答

4
public class MyActivity extends Activity { 

private LinearLayout main; 
private int id = 0; 
private List<EditText> editTexts = new ArrayList<EditText>(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    main = new LinearLayout(this); 
    main.setOrientation(LinearLayout.VERTICAL); 

    Button addButton = new Button(this); 
    addButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      addEditText(); 
     } 
    }); 

    Button submit = new Button(this); 
    submit.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      for (EditText editText : editTexts) { 
       editText.getText().toString(); 
       // whatever u want to do with the strings 
      } 
     } 
    }); 

    main.addView(addButton); 
    main.addView(submit); 
    setContentView(main); 
} 

private void addEditText() { 
    LinearLayout editTextLayout = new LinearLayout(this); 
    editTextLayout.setOrientation(LinearLayout.VERTICAL); 
    main.addView(editTextLayout); 

    EditText editText1 = new EditText(this); 
    editText1.setId(id++); 
    editTextLayout.addView(editText1); 

    editTexts.add(editText1); 

    EditText editText2 = new EditText(this); 
    editText2.setId(id++); 
    editTextLayout.addView(editText2); 

    editTexts.add(editText2); 

} 
+0

你的代碼看起來很不錯,它可以使用一些自動格式化,即使有基本概念,也可以用一段描述代碼功能的句子。此外,用戶希望通過'+'按鈕單擊添加_two_ EditTexts,而您可以簡單地添加嵌套的LinearLayout,使用RelativeLayout將會更好... – Sam 2012-07-16 19:29:18

+0

我的不好,我沒有完全讀完這個問題,無論如何都歡呼! – eoghanm 2012-07-16 19:31:22

+0

感謝eoghanm。一個問題:我將如何從所有添加的editTexts收集數據?有沒有像所有可見的editTexts函數中的「getText()」? – 2012-07-16 19:35:41

3

ListView中執行此操作。 然後,您可以將它們添加到ListAdapter。

然後用adapter.notifyDatasetChanged()

+0

多數民衆贊成在一個偉大的想法!謝謝! – 2012-07-16 19:09:09

0

可能是我不太清楚,但不是添加個別編輯文本,你可以像線性佈局添加爲組視圖在這裏你可以使用任何標誌值添加動態名稱轉換也。

該視圖您可以更新到列表視圖像列表視圖中的膨脹行....

+0

好點斯里蘭卡。我最終做的是膨脹一個XML佈局,並使用它來代替單個編輯文本 – 2012-07-19 14:00:10