Более простой способ установки значений в классе из пользовательского интерфейса
Часто существует сценарий, в котором есть ряд полей пользовательского интерфейса, которые необходимо скопировать в объекты модели. Например, в настоящее время я пишу страницу корзины, которая принимает информацию о кредитной карте в Activity, и мне нужно записать все введенные значения в объект CreditCard.
Я получаю блоки кода, которые выглядят следующим образом:
CreditCard card = new CreditCard();
card.setFullName(txtFullName.getText().toString());
card.setAddress(txtStreetAddress.getText().toString());
card.setCity(txtCity.getText().toString());
card.setState((String) spinnerState.getSelectedItem());
card.setZip(txtZip.getText().toString());
card.setPhone(txtPhone.getText().toString());
card.setMonth(txtMonth.getText().toString());
card.setYear(txtYear.getText().toString());
card.setNumber(txtNum.getText().toString());
card.setCvv(txtcvv.getText().toString());
Я пытался найти способ с помощью тегов пользовательского интерфейса в XML или другими способами упростить / автоматизировать этот процесс, но я не могу найти эффективное средство. Я что-то упускаю?
1 ответ
К сожалению, в Android нет ничего встроенного, что позволило бы вам элегантно связывать большие порции данных (как показано в вашем примере) из пользовательского интерфейса.
Одна вещь, которую вы можете сделать, чтобы сделать ваш код чище / более тестируемым, - это "вставить" поля, например, "txtFullName.getText(). ToString()", в конструктор CreditCard. Таким образом, у вас нет лишнего "установочного" кода, как в вашем примере. Однако при создании экземпляра объекта Credit Card у вас все равно будет блок кода:
CreditCard card = new CreditCard(arg1, arg2, arg3, arg4..etc)
Еще одна вещь, которую вы можете сделать, это использовать инфраструктуру внедрения зависимостей (DI), такую как Dagger. Кинжал "вводит" поля для вас в модуле (модулях), который вы указываете для своего класса (классов), "за сценой".
http://square.github.io/dagger/
РЕДАКТИРОВАТЬ: ознакомьтесь с новой функцией привязки данных, выпущенной в Android Studio 1.3 (в настоящее время бета-версия)