我有TextView
来显示时间。我想使用Android的DataBinding插件。
对于格式化时间,我使用DateUtils.formatDateTime(context, int, int)
方法,该方法需要Context
个实例。是否可以获取上下文包含元素?或者我必须使用旧学校的方式?
由于
答案 0 :(得分:51)
此外,您可以使用当前视图context
作为参数在视图中执行此类操作。
...
android:text="@{yourModelHere.yourModelMethodHere(context)}"
...
答案 1 :(得分:29)
我想我应该回答而不是发表评论。当rc2发布时,你会有更多的选择。在rc1中,您可以将变量中的上下文传递给Binding,然后将其作为参数传递给方法。或者,您可以为数据绑定创建自定义属性:
@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}"/>
答案 2 :(得分:5)
生成名为context的特殊变量以用于绑定 根据需要表达。上下文的值是来自的Context root View的getContext()。上下文变量将被覆盖 具有该名称的显式变量声明。
换句话说,每次需要传递上下文时,只需使用if(obj["__proto__"]["constructor"]===Object){
alert("This is Object Literal");
}
中的“上下文”。