Android DataBinding在哪里获取上下文?

时间:2015-09-03 11:33:25

标签: android data-binding view android-context

我有TextView来显示时间。我想使用Android的DataBinding插件。

对于格式化时间,我使用DateUtils.formatDateTime(context, int, int)方法,该方法需要Context个实例。是否可以获取上下文包含元素?或者我必须使用旧学校的方式?

由于

3 个答案:

答案 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"); } 中的“上下文”。