2014-10-04 65 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,以便每次文本更改時清除以前的值。 – 2014-10-04 08:27:09

+0

@MisaghEmamverdi謝謝!我明白了。我可以知道什麼是解決方案嗎? – user3663600 2014-10-04 08:30:22

+1

檢查程序員的答案。 – 2014-10-04 08:31:30

回答

0

試試這個: 初始化類的聲明後,數組列表,因爲每次你更改edittext值您的arraylist正在使用afterTextChanged()方法創建,這意味着如果您在下次改變edittext值時更改了edityl值將添加到edittext值,那麼空/新陣列列表正在創建並向其添加已更改的值。最多可達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 2014-10-04 08:37:18

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()); 
    } 
}