Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在ArrayList中添加动态EditText值_Android - Fatal编程技术网

Android 如何在ArrayList中添加动态EditText值

Android 如何在ArrayList中添加动态EditText值,android,Android,我使用循环动态创建了10个EditText。现在我想为所有10个EditText赋值,并将这些值添加到ArrayList中。为此,我编写了以下代码 req1estimate_value.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int co

我使用循环动态创建了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));

                    }
requ1estimate_value.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
估计值=s.toString();
estimatedModified=新ArrayList();
估算修改。添加(估算值);
}
});

对于(int k=0;k您可以在添加的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());
    }
}
for(inti=0;i试试这个:
在类声明之后初始化arraylist,因为每次更改edittext值时,都会在afterTextChanged()中创建arraylist方法,这意味着如果您下次更改edittext值时更改了它添加到arraylist的edittext值,则空/新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));

                    }
例如。
公共课ABC
{
ArrayList estimatedModified=新的ArrayList();
请求1估计值。添加TextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
//TODO自动生成的方法存根
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
//TODO自动生成的方法存根
}
@凌驾
公共无效后文本已更改(可编辑){
估计值=s.toString();
估算修改。添加(估算值);
}
});

对于(int k=0;kYou正在
postTextChanged
方法中构造arraylist,因此每次文本更改时都会清除以前的值。@MisaghamVerdi谢谢!我明白了。我可以知道解决方法吗?检查程序员的答案。感谢您重定向到我的答案Misagh:)@用户3663600检查我下面的答案。如果它解决了您的问题,请接受答案。谢谢!谢谢!但是如果我给25800是EditText的值,那么我将得到2,25258258025800。