Android очистка всех полей EditText с помощью кнопки Очистить

как мне очистить все EditText поля в макете с Clear Button. У меня есть регистрационная деятельность, которая имеет около 10 различных EditTexts. Я знаю, что могу пойти и взять ссылку на каждый конкретно, а затем set.Text(""); но я ищу более динамичную элегантность. Возможно, захватить Layout и цикл через все элементы там ищет EditText типы, а затем установка их в "". Не уверен, как это сделать, хотя и пытался искать в интернете, но не повезло. Любой пример кода?

10 ответов


ответ @Pixie отличный, но я хотел бы сделать его намного лучше.

этот метод отлично работает, только если весь EditText находится в одном(одном) макете, но когда есть куча вложенных макетов, этот код не имеет с ними дела.

почесав голову, я сделал следующее решение:

private void clearForm(ViewGroup group) {       
    for (int i = 0, count = group.getChildCount(); i < count; ++i) {
        View view = group.getChildAt(i);
        if (view instanceof EditText) {
            ((EditText)view).setText("");
        }

        if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
            clearForm((ViewGroup)view);
    }
}

чтобы использовать этот метод, просто вызовите это следующим образом:

clearForm((ViewGroup) findViewById(R.id.sign_up));

где вы можете заменить свой ID Р..sign_up с идентификатором корневой макет вашего XML-файла.

Я надеюсь, что это поможет многим людям, как мне.

:)


вы можете перебирать всех детей в группе представлений и очистить все EditText поля:

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

использовать editText.getText().clear();


после onclick любого действия сделайте ниже Шаг

 ((EditText) findViewById(R.id.yoursXmlId)).setText("");

или очистите все поля EditText, повторив все дочерние:

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

или используйте простой ниже Шаг:

editText.getText().clear();

может быть полезным.


в моем случае я сделал это.

public static void resetForm(ViewGroup group) {
    for (int i = 0, count = group.getChildCount(); i < count; ++i) {
        View view = group.getChildAt(i);
        if (view instanceof EditText) {
            ((EditText) view).getText().clear();
        }

        if (view instanceof RadioGroup) {
            ((RadioButton)((RadioGroup) view).getChildAt(0)).setChecked(true);
        }

        if (view instanceof Spinner) {
            ((Spinner) view).setSelection(0);
        }

        if (view instanceof ViewGroup && (((ViewGroup) view).getChildCount() > 0))
            resetForm((ViewGroup) view);
    }
}

я использовал это для вложенного LinearLayout для очистки EditTexts и RadioButtons

/ / метод clear private void clear(группа ViewGroup) { for (int i=0, count=group.getChildCount (); i

        if(view instanceof  LinearLayout)
        {
            clear((ViewGroup) view);
        }
         else if(view instanceof EditText)
        {
            ((EditText) view).getText().clear();
        }
        if (view instanceof  RadioButton)
        {
            ((RadioButton) view).setChecked(false);
        }
    }//end for
}//end method clear

вы всегда можете это сделать...это работает для меня:

mClearButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mEditName.getText().clear();
            mEditSummary.getText().clear();
            mEditPrice.getText().clear();
            mEditQuantitiy.getText().clear();

        }
    });

таким образом, у вас есть одна жирная кнопка, которая очищает все поля для вас один раз


Это очень просто.Введите это в свою функцию кнопки -

finish();
startActivity(this,YourCurrentActivity.class);

вот так просто. Добро пожаловать.


   // Update answer

private void clearEditTextGroup(ViewGroup group){


    for(int i=0 ; i< group.getChildCount(); i++){
    View view = group.getChildAt(i);
    if(view instanceof EditText){

    // use one of clear code
    }

     if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
            clearEditTextGroup((ViewGroup)view);

    }


   }

используйте один из этого кода, чтобы очистить edittext

edittext.getText().clear();

или

edittext.setText(null);

или

edittext.setText("");

использовать editText.getText().clear();

или setText как пустой, используя этот код ниже editText.setText(");