2015-11-04 127 views
1

我正在建立一個android應用程序,我正在創建動態EdittextView。我需要顯示用戶輸入的整數之和。下面是我的代碼來創建動態EdittextView:如何在android中獲取動態創建的EditText的值?

for (int i = 1; i < ZipRunApplication.ConfigLeg; i++){ 
     LayoutInflater inflater = null; 
     inflater = (LayoutInflater) getApplicationContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View mLinearView = inflater.inflate(R.layout.drop_money, null); 
     TextView droxTextView = (TextView) mLinearView.findViewById(R.id.dropTextView); 
     final TextView position = (TextView) mLinearView.findViewById(R.id.position); 
     final TextView Amount = (TextView) mLinearView.findViewById(R.id.Amount); 
     final EditText dropEditTextView = (EditText) mLinearView.findViewById(R.id.dropEditext); 

     dropEditTextView.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       Amount.setText(dropEditTextView.getText().toString()); //    


      } 
     }); 
     droxTextView.setText("Amount to be pick From Drop " + String.valueOf(i)); 
     position.setText(String.valueOf(i)); 
     droxTextView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 
     container.addView(mLinearView); 
    } 

可以在任何一個可以幫助我得到的所有EdittextView的總和創建動態地。

回答

0

可以使用

Integer.parseInt(dropEditTextView.getText().toString()) 
0

setTag()到每個的EditText爲變量i,並採取大小ZipRunApplication的arrarylist。當你在edittext中編寫,然後在textchnage監聽器中獲取標籤值並將其轉換爲int。這個值會告訴你你在編寫數組列表中的哪個位置。然後在arraylist的位置設置Integer.parseInt(editTextString)。

1

答案:

可以在任何一個可以幫助我得到的總和所有動態創建的EdittextView 。

您可以維護一個EditText的ArrayList,然後遍歷它們並獲得輸入到它們中的文本並找到總和。

舉個例子,我有以下片段:

LinearLayout layout; 
List<EditText> concernedEditTexts; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     layout = (LinearLayout)findViewById(R.id.base_layout); // Base layout defined in xml 

     concernedEditTexts = new ArrayList<EditText>(); 

     // Creating five EditTexts 
     for(int i= 0; i< 5; i++){ 
      EditText text = new EditText(getApplicationContext()); 
      layout.addView(text); 
      concernedEditTexts.add(text); // Adding dynamically created EditText in the ArrayList 
     } 
     Button button = new Button(getApplicationContext()); 
     button.setText("Get Sum"); 
     layout.addView(button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int sum = 0; 

       // Iterate through the List and find the sum 
       for(EditText editText : concernedEditTexts){ 
        sum+= Integer.parseInt(editText.getText().toString()); 
       } 
       Log.d("SUM","Sum is "+sum); 
      } 
     }); 
    } 

注:此代碼是怎麼樣的原料,需要更大量的驗證,但應該足以解釋這個概念。

在您的示例中,您需要將每個dropEditTextView存儲在List中,然後遍歷列表,如我的示例中所示會給出所需的結果。

0

四個提示:

1 - 在這裏,我們通過母公司獲得孩子的:

for (int i = 0; i < mLinearLayout.getChildCount(); i++) { 
      if (mLinearLayout.getChildAt(i) instanceof LinearLayout) { 
       LinearLayout ll = (LinearLayout) mLinearLayout.getChildAt(i); 
       for (int j = 0; j < ll.getChildCount(); j++) { 
        if (ll.getChildAt(j) instanceof EditText) { 
         ll.getChildAt(j).setOnFocusChangeListener(this); 
        } 
       } 
      } 
     } 

2 - 不要忘了解析您嘗試接收數據:

Integer.parseInt(mFocusedEditText.getText().toString()); 

3 - 備註:

view.setTag() < - >View.getTag()

4 - 最後但並非最不重要的:在可讀性,可維護性和性能方面,你會得到一個點很快,其中ListView - 或RecyclerView將滿足您的需求好得多(所以請記住:在上面的代碼不是一個合適的解決方案,即使它工作)。

ListViewRecyclerView

相關問題