erd*_*inz 26 android listview android-edittext
我创建了一个ListView(myList),每行有一个EditText-Field(R.id.mannschaften).在ListView下,我创建了一个Button,并在OnCreate() - Method中为它设置了一个OnClickListener.现在,当单击Button时,我想迭代ListView并获取每行中EditText-Field的值并将它们保存在String-List中.但是我该怎么做?
这是我的代码:
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());
}
.....
}
Run Code Online (Sandbox Code Playgroud)
我已经知道,getChildAt仅适用于可见行,但我不知道如何以不同方式执行.
小智 34
当您使用时,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());
}
....
}
Run Code Online (Sandbox Code Playgroud)
erd*_*inz 19
在朋友的帮助下解决了问题:
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());
}
....
}
Run Code Online (Sandbox Code Playgroud)
我认为@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()));
}
}
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41005 次 |
| 最近记录: |