从UI设置类的更简单方法

时间:2015-04-30 18:31:56

标签: android android-layout android-json

通常情况下,必须将许多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标签或其他方式提出一种方法来简化/自动化这个过程,但我无法想出一种有效的方法。我错过了什么吗?

1 个答案:

答案 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