我使用循环动态创建了10个EditText。现在我想为所有10个EditText赋值,我想在ArrayList中添加这些值。为此,我写了以下代码。
req1estimate_value.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
estimate_value=s.toString();
estimatedModified = new ArrayList<String>();
estimatedModified.add(estimate_value);
}
});
for(int k=0;k<estimatedModified.size();k++)
{
System.out.println(estimatedModified.get(k));
}
但我只能得到最后一个EditText的值。我怎么解决这个问题?谁能帮我? 提前谢谢。
答案 0 :(得分:0)
你可以在添加的editText子节点的父节点上设置循环,并检查它是否是editText获取它的文本并添加到数组:
for(int i=0;i<parent.getChildCount();i++){
if(parent.getChildAt(i) InstanceOf EditText){
EditText et = (EditText) parent.getChildAt(i);
array.add(et.getText().toString());
}
}
答案 1 :(得分:0)
试试这个: 在类声明后初始化arraylist,因为每次更改edittext值时,你的arraylist都是在afterTextChanged()方法中创建的,这意味着如果你改变edittext值,它会在你下次更改edittext值时添加到arraylist中的空/新arraylist正在为它创建并添加更改的值,并且循环最多会持续10次,因此最终您将获得最后一个EditText的值。
e.g.
public class ABC
{
ArrayList<String> estimatedModified = new ArrayList<String>();
req1estimate_value.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
estimate_value=s.toString();
estimatedModified.add(estimate_value);
}
});
for(int k=0;k<estimatedModified.size();k++)
{
System.out.println(estimatedModified.get(k));
}
希望这对你有所帮助。如果您有任何理解上的问题,请告诉我。