経緯
Data Bindingライブラリを使ってる時に、Entityが持つDate型のプロパティをそのままXML上で整形した状態で表示したかった。
Data Binding使ってるとこういう部分はViewModelに持ってくというのもありだけど、リスト表示で使うAdapterの中だとEntityを渡して表示するケースもある。
そういった場合でも表示処理を分散させたくないのでXML側に寄せたかった。
方法
Commons Lang3のDateFormatUtils
を使った
これを使って2017/04/21 00:30に投稿みたいな文字を出力させてみる
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="org.apache.commons.lang3.time.DateFormatUtils" />
<variable name="item" type="com.example.Item" />
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{DateFormatUtils.format(item.createdAt, `yyyy/MM/dd HH:mmに投稿`)}" />
</layout>
イメージ
自分の今作ってるアプリで実際にやっている
ほか
kotlin + Data Bindingあたり使ってQiitaアプリ作ってます。
https://github.com/chuross/qiiip
ある程度できてきたらなんか記事書くかもしれない。
DataBindingライブラリちょいちょい触ってたけど、便利なのでこれも色々書いていこうと思う。