Установить текст все EditText сразу - PullRequest
0 голосов
/ 29 октября 2018

У меня есть фрагмент с 30 EditText внутри. Я хочу знать, есть ли способ захватить все EditTexts и очистить текст внутри него, не делая это один за другим.

спасибо.

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Это должно работать, если все ваши edittexts находятся в пределах одного и того же макета, например, относительный макет

ViewGroup group = (ViewGroup)findViewById(R.id.your_group);
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
    View view = group.getChildAt(i);
    if (view instanceof EditText) {
        ((EditText)view).setText("");
    }
}
0 голосов
/ 29 октября 2018

Да, вы можете сделать с помощью следующего метода.

public void clearStudentInfo(ViewGroup textViewsGroup) {       
    for (int i = 0, count = textViewsGroup.getChildCount(); i < count; ++i) {
        View view = textViewsGroup.getChildAt(i);
        // Check and confirm, is it is the TextView or not?
        if (textViewsGroup instanceof EditText) {
            ((EditText)textViewsGroup).setText("");
        }
    }
}

Вы можете вызвать метод, нажав кнопку очистки, как указано ниже.

...

Button btnClear = findViewById(R.id.btnClr);

...

btnClear.setOnClickListener(new View.OnClickListener) {
    @Override
    void onClick(...) {
        clearStudentInfo((ViewGroup) findViewById(R.id.student_info));
}

Спасибо ??

0 голосов
/ 29 октября 2018

Попробуйте что-то вроде этого:

ArrayList<EditText> editTextsList = new ArrayList<EditText>();

for( int i = 0; i < myLayout.getChildCount(); i++ )
  if( myLayout.getChildAt( i ) instanceof EditText )
    editTextsList.add( (EditText) myLayout.getChildAt( i ) );

Выполните итерацию на editTextsList и выполните свои действия для каждого из EditText в списке

Надеюсь, это поможет

...