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("");
}
}
после 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(");