時間を表示するためのTextView
があります。 AndroidのDataBindingプラグインを使用したい。
時間をフォーマットするために、Context
インスタンスを取るDateUtils.formatDateTime(context, int, int)
メソッドを使用しています。コンテキストインクルード要素を取得することは可能ですか?それとも古い学校の方法を使用する必要がありますか?
ありがとう
コメントを書く代わりに答えるべきだと思った。 rc2がリリースされると、さらに多くのオプションがあります。 rc1では、変数のコンテキストをBindingに渡し、それをパラメーターとしてメソッドに渡すことができます。または、データバインディング用のカスタム属性を作成できます。
@BindingAdapter({"timeMillis", "dateFlags"})
public static void setDateText(TextView view, int timeMillis, int dateFlags) {
view.setText(DateUtils.formatDateTime(view.getContext(), timeMillis,
dateFlags));
}
そして、それをTextViewで使用します:
<TextView ... app:timeMillis="@{timeVar}" app:dateFlags="@{dateFlags}"/>
また、現在のビューcontext
をパラメーターとして使用して、ビューでこのようなことを行うことができます。
...
Android:text="@{yourModelHere.yourModelMethodHere(context)}"
...
Contextという名前の特別な変数は、必要に応じて式をバインドするために生成されます。コンテキストの値は、ルートビューのgetContext()のコンテキストです。コンテキスト変数は、その名前の明示的な変数宣言によってオーバーライドされます。
つまり、コンテキストを渡す必要があるたびに、@{Object.method(context)}
のように「コンテキスト」を使用するだけです。