2017-02-03 5 views
-1

나는 레이아웃 인플레이터 아래EditText를 확인하는 방법은 동적으로 추가 할 때 텍스트를 포함하지 않습니까?

를 사용 3 EditTexts하나의 버튼을 추가 한 내 자바 코드 :

mAddButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
        if (!et_boiler_make_boiler_row.getText().toString().equalsIgnoreCase("")) { 
         onAddNewClicked(); 
         buttonRemove.setVisibility(View.VISIBLE); 
        } else { 
         Toast.makeText(ConsumerCompanyProfileDetails4.this, "Can not add more rows. :(", 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }); 
    private void onAddNewClicked() { 
       LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       final View addView = layoutInflater.inflate(R.layout.boiler_row, null); 

       buttonRemove = (ImageView) addView.findViewById(R.id.remove); 
       et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row); 
       et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row); 
       et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row); 

       buttonRemove.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         ((LinearLayout) addView.getParent()).removeView(addView); 
        } 
       }); 

       mContainerView.addView(addView); 
      } 

지금 내가 모든 3 EditTexts 어떤 가치가 있는지 여부를 확인하려면 또는 새 행을 추가하기 전이 아닙니다. 즉, 새 행을 추가하기 전에 동적으로 추가 된 EditText에 대한 유효성 검사를 추가하려고합니다.

또한 추가 된 EditText에서 값을 가져 오는 방법을 알고 싶습니다.

도와주세요!

+0

edittext를 동적으로 추가하는 동안 목록에 동적으로 저장하고 null이 아닌지 확인하십시오. –

답변

0

당신은 반복 할 수있는, 내 아래 솔루션을 확인하십시오.

새 행을 추가하는 동안 모든 편집 텍스트에 대해 태그를 추가하십시오 (일부 값은 모두 고유해야합니다). exe를 들어 ,

et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row); 
et_boiler_make_boiler_row.setTag(1); 
et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row); 
et_capacity_boiler_row.setTag(1); 
et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row); 
et_estd_year_boiler_row.setTag(1); 

및 것은 필요한 곳에 태그를 확인하고 작업을한다.

+0

예 ... 작동했습니다 ... 깃발을 사용하여 텍스트가있는 whet edittext를 확인했습니다. 솔루션이 완벽합니다. 감사.. – Android

0

편집 문구보기를 List에 저장하십시오. for-each으로 새 편집 텍스트보기를 추가하기 전에 목록을 확인하고 각 편집 텍스트의 텍스트를 edittext.getText().toString()으로 가져옵니다. 이제 isEmpty() 또는 원하는 것을 확인할 수 있습니다. mContainerView이

for (int i = 0; i < mContainerView.getChildCount(); i++) { // check all rows 
     View v = mContainerView.getChildAt(i); 
     EditText editText = (EditText)view.findViewById(R.id.et_capacity_boiler_row); 
     //do whatever you want 
} 

어린이하거나 마지막 인덱스

View v = mContainerView.getChildAt(mContainerView.getChildCount()-1); 
EditText editText = (EditText)view.findViewById(R.id.et_capacity_boiler_row); 
//do whatever you want 

(mContainerView 만 추가 포함 가정 할 전망)

0

이 방법으로 많은 것을 할 수 있습니다를 선택을 통해

0

Please try this ... 내가 도움이 될 것 같아.

String[] str = {"AAA","BBB","CCC"}; 
mAddButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     if (!str[0].equalsIgnoreCase("") && !str[1].equalsIgnoreCase("") && !str[2].equalsIgnoreCase("")) { 
      onAddNewClicked(); 
      str = {"","",""}; 
     } else { 
      Toast.makeText(ConsumerCompanyProfileDetails4.this, "Can not add more rows. :(", 
         Toast.LENGTH_SHORT).show(); 
     } 
    } 
}); 

및 이와 유사한 방법으로 검정 검정 값을 사용할 수 있는지 여부를 나타냅니다.

private void onAddNewClicked() { 
     LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     final View addView = layoutInflater.inflate(R.layout.boiler_row, null); 

     ImageView buttonRemove = (ImageView) addView.findViewById(R.id.remove); 
     EditText et_boiler_make_boiler_row = (EditText) addView.findViewById(R.id.et_boiler_make_boiler_row); 
     EditText et_capacity_boiler_row = (EditText) addView.findViewById(R.id.et_capacity_boiler_row); 
     EditText et_estd_year_boiler_row = (EditText) addView.findViewById(R.id.et_estd_year_boiler_row); 

     et_boiler_make_boiler_row.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) { 
       str[0] = s; 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

     et_capacity_boiler_row.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) { 
       str[1] = s; 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

     et_estd_year_boiler_row.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) { 
       str[2] = s; 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

     buttonRemove.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       ((LinearLayout) addView.getParent()).removeView(addView); 
      } 
     }); 

     mContainerView.addView(addView); 
} 

이 솔루션에서는 세 가지 EditText 값을 모두 입력했는지 여부를 확인합니다. 사용자가 무언가를 입력하고 지우는 것보다 더 빈 값을 제공하는 경우. 그래서,이 솔루션은 귀하의 요구 사항을 충족 시키길 바랍니다.