Android 如何在ArrayList中添加动态EditText值
我使用循环动态创建了10个EditText。现在我想为所有10个EditText赋值,并将这些值添加到ArrayList中。为此,我编写了以下代码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
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。