我有一个用于显示时间的 TextView
。我想使用Android的DataBinding插件。
为了格式化时间,我正在使用 DateUtils.formatDateTime(context, int, int)
方法,它需要一个 Context
实例。我可以获得包括 元素在内的上下文吗?还是我必须采用传统的方法?
谢谢
我有一个用于显示时间的 TextView
。我想使用Android的DataBinding插件。
为了格式化时间,我正在使用 DateUtils.formatDateTime(context, int, int)
方法,它需要一个 Context
实例。我可以获得包括 元素在内的上下文吗?还是我必须采用传统的方法?
谢谢
你可以在视图中使用当前视图context
作为参数来执行类似以下的操作。
...
android:text="@{yourModelHere.yourModelMethodHere(context)}"
...
我认为我应该回答而不是发表评论。在发布rc2版本时,您将拥有更多选项。在rc1中,您可以将上下文传递到变量中绑定,然后将其作为参数传递给方法。或者,您可以为数据绑定创建自定义属性:
@BindingAdapter({"timeMillis", "dateFlags"})
public static void setDateText(TextView view, int timeMillis, int dateFlags) {
view.setText(DateUtils.formatDateTime(view.getContext(), timeMillis,
dateFlags));
}
然后在您的TextView中使用它:
<TextView ... app:timeMillis="@{timeVar}" app:dateFlags="@{dateFlags}"/>
@{@string/myformat(var1, var2)}
的内容。 - George Mount一个名为context的特殊变量会在需要时生成,用于绑定表达式。context的值是从根视图的getContext()方法获取的上下文。如果有同名的显式变量声明,那么context变量将被覆盖。
换句话说,每次需要传递context时,只需使用"context",例如@{Object.method(context)}
。
使用字符串资源,请使用以下方法
this.yourView.getRoot().getResources().getString(R.string.your_string)