使用数据绑定时从getTimeInMillis获取日期

时间:2017-03-04 13:56:03

标签: android data-binding formatting android-databinding

我有一个timeInMillis值,我知道我可以用类似的东西获得Date;

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateString = formatter.format(new Date(dateInMillis)));

我正在使用DataBinding填充RecyclerView。我也知道我可以在使用DataBinding这样的东西时操纵字符串;

android:text='@{String.format("%.1f", example.double)}'

但是,我无法弄清楚如何使用TextView值中的格式Date填充timeInMillis

3 个答案:

答案 0 :(得分:11)

您可以在模型中添加一个函数,它可以将timeInMillis转换为格式化日期。

在dataBinding布局中使用的模型中

public String getDateFormatted(){
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
    return formatter.format(new Date(dateInMillis)));;
}

在您的布局中:

<layout>
   <data>
      <variable name="yourModel"
                type="com.example.model.yourModel"/>
   </data>
...
<TextView 
...
   android:text="@{yourModel.dateFomatted}"
/>

答案 1 :(得分:10)

我认为将格式放在资源中是最好的方法:

<string name="format">%1$td/%1$tm/%1$tY</string>

您可以将值绑定到资源,如下所示:

<TextView ... android:text="@{@string/format(model.date)}" />

答案 2 :(得分:0)

正如 George Mount 所说,您可以使用原生字符串格式资源来处理它。

这里我展示了一些我最终实现的例子:

<string name="formatter_date">%1$td/%1$tm/%1$tY</string>
<string name="formatter_time">%1$tH:%1$tM</string>

首先是 01/01/2000

秒是 00:00

所有文档都是Here