Android - как накачать представление с помощью нескольких полей EditText и прочитать их значения?

1

Для моего приложения Android я хочу иметь представление, которое позволяет пользователю щелкнуть кнопку плюс, чтобы добавить поля EditText, а рядом с полями EditText, я хочу иметь кнопки минус, которые удаляют их из представления. По сути, что-то, что очень похоже на добавление нескольких телефонных номеров/адресов электронной почты в интерфейс редактирования контактов на Android.

Я предполагаю, что мне нужно будет сделать это, раздувая мое основное представление отдельным, содержащим EditText и кнопку, которую я хочу добавлять каждый раз. Тем не менее, я понятия не имею, как мне удастся идентифицировать каждый EditText и кнопку с уникальным идентификатором, и поэтому я не знаю, как мне удастся захватить значения каждого EditText для сохранения в моей базе данных. Может ли кто-нибудь посоветовать мне, что мне нужно делать? Спасибо.

Теги:
android-edittext
inflate

2 ответа

2
Лучший ответ

Если вы надули субмакет, тогда у вас должен быть объект View.

Затем вы можете вызвать findViewById(R.id.edit_text_1) на этом View — предполагая, что вы предоставили идентификаторы в XML-подметке.

Пока вы отслеживаете каждый родительский View s, вы всегда можете использовать findViewById() для них. Или после инфляции, если вы действительно хотите, вы можете установить новый, глобально уникальный идентификатор на каждом EditText, используя setId().

  • 0
    Что если у меня в под-макете есть несколько EditTexts рядом друг с другом, обернутые в RelativeLayout, и у меня есть атрибуты макета, такие как "layout_below", "layout_toRightOf"? Должен ли я изменить эти атрибуты при изменении идентификаторов всех EditTexts?
  • 0
    И нет ли способа установить строку в качестве идентификатора элемента? Кажется совершенно нелогичным, что setId () будет принимать только аргумент int.
Показать ещё 2 комментария
0

Вы можете назначить виджет вида динамически и создать свой собственный идентификатор, если он назначен.

Button b = new Button(this);
b.setId(myId);

Затем вы можете вернуться к этому виджету.

findViewById(myId);
  • 0
    Допустим, я хочу последовать этому примеру . Когда я нажимаю кнопку «Добавить», представление обертки уже было накачано вложенным видом. Теперь, как мне установить идентификаторы этих новых элементов, поскольку, предположительно, они уже созданы инфлятором (что делает ненужным «Button b = new Button (this)»)? Или как я могу ссылаться на них в целях хранения данных?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню