2014-10-04 3 views
0

루프를 사용하여 동적으로 10 개의 EditText를 만들었습니다. 이제 10 개의 EditText에 모두 값을 부여하고 ArrayList에 그 값을 추가하고 싶습니다. 이를 위해 다음 코드를 작성했습니다.ArrayList에 동적 EditText 값을 추가하는 방법

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

'afterTextChanged' 메소드에서 arraylist를 구성하므로 텍스트가 바뀔 때마다 이전 값이 지워집니다. –

+0

@MisaghEmamverdi 감사합니다! 나는 이해했다. 그 해결책이 무엇인지 알 수 있습니까? – user3663600

+1

프로그래머의 응답을 확인하십시오. –

답변

0

이 : , 클래스 선언 후 ArrayList를 초기화하면 때마다 때문에 afterTextChanged() 메서드에서 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)); 

        } 

희망이 도움이됩니다. 이해에 문제가 있으면 알려주십시오.

+0

감사합니다. 그러나 만약 내가 25800에 대한 가치가 있다면 EditText는 2,25,258,2580,25800을 얻고 있습니다. – user3663600

0

당신은 추가 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()); 
    } 
} 
관련 문제