不打印正确的 ObservableLong

Not print correct ObservableLong

Android Studio 3.0.1,Java 1.8,Gradle 4.2 在我的片段中:

public final ObservableLong dateFromMills = new ObservableLong();

这里的方法不是将日期转换为字符串:

public static String getDateAsString(long date, String pattern) {
        return getDateAsString(new Date(date), pattern);
    }

    // if pattern is null then will be use defaultDTCDateFormat
    public static String getDateAsString(Date date, String pattern) {
        if (date == null) {
            return "null";
        }
        SimpleDateFormat sdf = null;
        try {
            sdf = new SimpleDateFormat(pattern);
            return sdf.format(date);
        } catch (IllegalArgumentException ex) {
            sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(date);
        }
}

此处 xml 使用此方法的布局:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>    
        <import type="android.view.View" />    
        <import type="com.myproject.android.common.util.date.DateUtil" />  

    </data>

    <TextView
                            android:id="@+id/dateFromTextView"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text='@{DateUtil.getDateAsString(handler.dateFromMills, "dd.MM.yyyy")' />

</layout>

但在文本视图中打印结果

@{DateUtil.getDateAsString(handler.dateFromMills, "dd.MM.yyyy")

但是如果我用这个:

android:text='@{item.date != null ? DateUtil.getDateAsString(item.date, "MM/yy") : ""}'

这是成功的工作。 item.date 的类型为 java.util.Date

为什么 ObservableLong 不起作用?

绑定中缺少的“}”怎么办?通常我会建议绑定到 controller/presenter class,它在内部使用 DateUtil 而不是直接使用它。