如何在ArrayList中添加动态EditText值

时间:2014-10-04 08:15:22

标签: android

我使用循环动态创建了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的值。我怎么解决这个问题?谁能帮我? 提前谢谢。

2 个答案:

答案 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));

                    }

希望这对你有所帮助。如果您有任何理解上的问题,请告诉我。