我创建了一个ListView(myList中)有一个的EditText场每一行(R.id.mannschaften)。 在ListView中,我创建了一个按钮,并在OnCreate()设置一个OnClickListener它 - 方法。 现在,单击该按钮时,我想通过ListView控件进行迭代,并得到各行中的EditText字段的值,并将其保存在一个字符串列表。 但我怎么做呢?
这是我的代码:
private void ButtonClick() {
/** get all values of the EditText-Fields */
View v;
ArrayList<String> mannschaftsnamen = new ArrayList<String>();
EditText et;
for (int i = 0; i < myList.getCount(); i++) {
v = myList.getChildAt(i);
et = (EditText) v.findViewById(R.id.mannschaften);
mannschaftsnamen.add(et.getText().toString());
}
.....
}
我已经知道了,那getChildAt只为可见行,但我不知道如何做到这一点不同。
当您使用myList.getAdapter().getView(i,null,null)
你所得到的项目视图的新实例,请尝试ListView.getChildAt(position)
这样的方法:
private void ButtonClick() {
/** get all values of the EditText-Fields */
View v;
ArrayList<String> mannschaftsnamen = new ArrayList<String>();
EditText et;
for (int i = 0; i < myList.getCount(); i++) {
v = myList.getChildAt(i);
et = (EditText) v.findViewById(R.id.editText1);
mannschaftsnamen.add(et.getText().toString());
}
....
}
解决了一个朋友的帮助下问题:
private void ButtonClick() {
/** get all values of the EditText-Fields */
View v;
ArrayList<String> mannschaftsnamen = new ArrayList<String>();
EditText et;
for (int i = 0; i < myList.getCount(); i++) {
v = myList.getAdapter().getView(i, null, null);
et = (EditText) v.findViewById(i);
mannschaftsnamen.add(et.getText().toString());
}
....
}
我觉得从@Arius答案是相当接近的是正确的解决方案。 我只是想强调的是View
你应该得到的是View
与包含ListView
。 所以,你需要getChildAt(position)
与你相关ListView
。
private void ButtonClick() {
/** get all values of the EditText-Fields
find your ListView local variable you had created for example :
private ListView listview;
You also need to catch null value of EditText first. */
ArrayList<String> mannschaftsnamen = new ArrayList<String>();
EditText et;
for (int i = 0; i < listview.getCount(); i++) {
et = (EditText) listview.getChildAt(i).findViewById(R.id.editText1);
if (et!=null) {
mannschaftsnamen.add(String.valueOf(et.getText()));
/** you can try to log your values EditText */
log.v("ypgs", String.valueOf(et.getText()));
}
}
....
}
至于为什么选择的答案有时可能会扔在一个空的“等=(EditText上)v.findViewById(我);”
这岂不是在这一点上试图在我的位置中的观点,即你以前选择的选择项目? 因此,如果在孩子的意见较少的项目以外还有整个列表中的项目,你会得到空因我试图选择不存在的项目。
也许一个嵌套的循环可以解决这个问题呢? 或者,如果你已经知道你所需要的元素的索引,干脆直接给它的索引。