bak*_*kua 42 data-binding android view android-context
我有TextView显示时间.我想使用Android的DataBinding插件.对于格式化时间,我使用DateUtils.formatDateTime(context,int,int)方法,该方法接受Context实例.是否可以获取上下文包含元素?或者我必须使用旧学校的方式?
谢谢
epo*_*ool 65
您也可以使用当前视图context作为参数在视图中执行类似的操作.
...
android:text="@{yourModelHere.yourModelMethodHere(context)}"
...
Run Code Online (Sandbox Code Playgroud)
Geo*_*unt 36
以为我应该回答而不是发表评论.当rc2发布时,你会有更多的选择.在rc1中,您可以将变量中的上下文传递给Binding,然后将其作为参数传递给方法.或者,您可以为数据绑定创建自定义属性:
@BindingAdapter({"timeMillis", "dateFlags"})
public static void setDateText(TextView view, int timeMillis, int dateFlags) {
view.setText(DateUtils.formatDateTime(view.getContext(), timeMillis,
dateFlags));
}
Run Code Online (Sandbox Code Playgroud)
然后在TextView中使用它:
<TextView ... app:timeMillis="@{timeVar}" app:dateFlags="@{dateFlags}"/>
Run Code Online (Sandbox Code Playgroud)
小智 11
会根据需要生成一个特殊的名为context的变量,用于绑定表达式。context的值是根视图的getContext()中的Context。上下文变量将被具有该名称的显式变量声明覆盖。
换句话说,每次您需要传递上下文时,只需使用中的“ context”即可@{Object.method(context)}。