【问题标题】:Easier way to set values in a class from UI从 UI 中设置类中的值的更简单方法
【发布时间】:2015-07-10 14:15:54
【问题描述】:

通常存在这样一种情况,即必须将许多 UI 字段复制到模型对象中。例如,我目前正在编写一个在 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 中的 UI 标记或其他方式来简化/自动化此过程,但我无法找到有效的方法。我错过了什么吗?

【问题讨论】:

标签: android android-layout android-json


【解决方案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(当前为 Beta)中发布的新数据绑定 feature

【讨论】:

  • 很好地参考了 Android 数据绑定。
猜你喜欢
  • 2014-02-08
  • 2023-03-11
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多