【发布时间】:2012-04-28 07:46:50
【问题描述】:
我已经动态创建了 EditText 视图,现在我想将它们的文本放入一个列表或数组中,我该怎么做?
【问题讨论】:
-
看看这个:stackoverflow.com/questions/7200108/…或者你可以阅读EditText的documentation。
标签: android
我已经动态创建了 EditText 视图,现在我想将它们的文本放入一个列表或数组中,我该怎么做?
【问题讨论】:
标签: android
当您像这样动态地创建编辑文本时,您必须获取它们的参考..
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 将拥有对您的编辑文本的引用..您可以像这样获取文本..
String [] items=new String[allEds.size()]
for(int i=0; i < allEds.size(); i++){
items[i]=allEds.get(i).getText().toString();
}
【讨论】:
您可以创建两个List,一个用于存储动态创建的EditText,另一个用于存储其文本。
然后使用for-each 循环遍历EditText 列表并获取每个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);
}
【讨论】:
如果您的问题在于这些视图的可访问性:
// 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;
//...
}
}
【讨论】: