Извлечение данных из нескольких EditTexts без повторения кода - PullRequest
0 голосов
/ 07 августа 2020

Я хотел бы эффективно извлекать данные из полей EditText в форме без необходимости повторять один и тот же код несколько раз. Вот моя текущая реализация для четырех EditTexts:

    EditText editText1 = (EditText) findViewById(R.id.editText1);
    String message1 = editText1.getText().toString();
    formData.put("data1", message1);

    EditText editText2 = (EditText) findViewById(R.id.editText2);
    String message2 = editText2.getText().toString();
    formData.put("data2", message2);

    EditText editText3 = (EditText) findViewById(R.id.editText3);
    String message3 = editText3.getText().toString();
    formData.put("data3", message3);

    EditText editText4 = (EditText) findViewById(R.id.editText4);
    String message4 = editText4.getText().toString();
    formData.put("data4", message4);

1 Ответ

0 голосов
/ 09 августа 2020

Общие способы избежать повторения кода - это обычно циклы и функции. В этом случае вы должны добавить свои EditTexts в массив, например структуру данных, и l oop поверх них.

Например:

Вы можете сохранить текст редактирования на карте Ha sh а затем используйте al oop, чтобы добавить их в форму:

new HashMap<EditText, String>() {{
    put(R.id.et1, "name");
    put(R.id.et2, "phone");
    //etc...
}}.forEach((editText, s) -> formData.put(s, editText.getText().toString()));

Если вы не против использования неинформативных имен, вы можете просто использовать массив:

EditText[] toAdd = new EditText[]{findViewById(R.id.et1), findViewById(R.id.et2)};
for (int i = 0; i < toAdd.length; i++) {
    formData.put("data" + i, toAdd[i].getText().toString());
}

Или для хорошее сочетание обоих, вы можете использовать идентификатор EditText как имя

EditText[] toAdd = new EditText[]{findViewById(R.id.et1), findViewById(R.id.et2)};
for (EditText editText : toAdd) {
    formData.put(getResources().getResourceEntryName(editText.getId()), editText.getText().toString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...