通常情况下,必须将许多UI字段复制到Model对象中。例如,我目前正在编写一个接受活动中信用卡信息的购物车页面,我需要将所有输入的值写入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标签或其他方式提出一种方法来简化/自动化这个过程,但我无法想出一种有效的方法。我错过了什么吗?
答案 0 :(得分:1)
不幸的是,Android中没有任何硬连线可以让你以优雅的方式从UI绑定大块数据(如你的例子所示)。
要使代码更清晰/更可测试,可以做的一件事是将“txtFullName.getText()。toString()”字段“注入”到CreditCard构造函数中。这样,您就没有像在示例中那样使用多余的“setter”代码。但是,在实例化Credit Card对象时,您仍然会有一段代码:
CreditCard card = new CreditCard(arg1, arg2, arg3, arg4..etc)
您可以做的另一件事是使用像Dagger这样的依赖注入(DI)框架。 Dagger在你为你的类指定的模块中为你“注入”字段,“在幕后”。
http://square.github.io/dagger/
编辑:查看Android Studio 1.3(目前是测试版)中发布的新数据绑定feature