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

Jon*_*ght 8 data-binding formatting android android-databinding

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

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateString = formatter.format(new Date(dateInMillis)));
Run Code Online (Sandbox Code Playgroud)

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

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

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

Geo*_*unt 15

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

<string name="format">%1$td/%1$tm/%1$tY</string>
Run Code Online (Sandbox Code Playgroud)

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

<TextView ... android:text="@{@string/format(model.date)}" />
Run Code Online (Sandbox Code Playgroud)

  • 好答案。[这里是文档](https://developer.android.com/reference/java/util/Formatter#dt) 有关格式化的更多选项(例如,我想要像“2020 年 1 月 1 日”这样的格式,所以我使用了“ %1$tb %1$td,%1$tY”)。 (3认同)

Ben*_*ihr 13

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

在dataBinding布局中使用的模型中:

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

在你的布局中:

<layout>
   <data>
      <variable name="yourModel"
                type="com.example.model.yourModel"/>
   </data>
...
<TextView 
...
   android:text="@{yourModel.dateFomatted}"
/>
Run Code Online (Sandbox Code Playgroud)