不打印正确的 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
而不是直接使用它。
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
而不是直接使用它。