动态创建EditText并从每个EditText中获取文本

时间:2012-04-28 07:46:51

标签: android

我已经创建了EditText视图现在我想将他们的文本放到一个列表或数组中,我该怎么做?

3 个答案:

答案 0 :(得分:3)

你必须得到你的edittexts的参考资料,而你正在这样创建它们。

    EditText ed;
    List<EditText> allEds = new ArrayList<EditText>();

 for (int i = 0; i < count; i++) {   
   //count is number of edittext fields
ed = new EditText(MyActivity.this);
allEds.add(ed);

linear.addView(ed);
}

现在allEds将引用你的edittexts ..你可以得到这样的文字..

 String [] items=new String[allEds.size()]
 for(int i=0; i < allEds.size(); i++){
 items[i]=allEds.get(i).getText().toString();
 }

答案 1 :(得分:2)

您可以创建两个用于存储动态创建的List的{​​{1}}个用于存储其文本的EditText

然后使用EditText循环遍历for-each列表并获取每个EditText的文本并将其添加到文本列表中。

List<EditText> myList = new ArrayList<EditText>();
List<String> etText = new ArrayList<String>();
EditText myEt1 = new EditText(this);
EditText myEt2 = new EditText(this);
EditText myEt3 = new EditText(this);
//so on...

myList.add(myEt1);
myList.add(myEt2);
myList.add(myEt3);

for(EditText et : myList){
String settext = et.getText().toString();
etText.add(settext);
}

答案 2 :(得分:1)

如果您的问题是这些视图的可访问性:

// assume ll is your container LinearLayout and your EditTexts inserted in it
LinearLayout ll;
int nViews = ll.getChildCount();

for (int i = 0; i < nViews; i++) {
    View child = ll.getChildAt(i);
    if (child instanceof EditText ) {
        EditText edt= (EditText) child;
        //...
    }
}