2017-02-03 9 views
-1

Я добавил 3 EditTexts и одна кнопка с использованием макета InflaterКак проверить EditText имеет текст или нет при добавлении динамически?

Ниже мой Java код:

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 иметь какое-то значение или не перед добавлением новой строки. т. е. я хочу добавить проверки для EditTexts, которые добавляются динамически, прежде чем добавлять новую строку.

А также я хочу знать, как получить значения из добавленных EditTexts.

Пожалуйста, помогите!

+0

при добавлении edittext динамически хранить его в списке и при отправке проверить, нет ли null или нет. –

ответ

0

Вы можете перебрать 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

Да ... это сработало ... Я использовал флаг для проверки того, что edittext имеет текст или нет .. ваше решение идеально .. благодаря.. – Android

0

Сохраните вид edittext в List. Проверьте список перед добавлением нового вида edittext с for-each и получите текст каждого edittext с edittext.getText().toString(). Теперь вы можете проверить isEmpty() или что хотите.

0

Там есть много способов сделать это, Пожалуйста, проверьте мое решение ниже.

При добавлении новой строки добавьте тег (какое-то значение должно быть уникальным для всех) для всех edittext. Для ехе,

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

Пожалуйста, попробуйте это ... Я думаю, это поможет вам.

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, вводимые пользователем или нет. Если пользователь вводит что-то и чем его удаляет, а также дает пустое значение. Итак, это поможет вам. Надеюсь, это решение будет полностью соответствовать вашим требованиям.

 Смежные вопросы

  • Нет связанных вопросов^_^