2017-03-19 3 views
-4

私はアンドロイドの初心者です。この問題のような問題が発生しました Android DataBinding where to get context? データバインディングを使用してテキストビューの日付と時刻を正しくフォーマットするためのコンテキストを取得する必要があります。しかし、私はその答えをはっきりと理解していません。誰でもデータバインディングから正しい方法でコンテキストを取得するのに役立ちます。データバインドからコンテキストを取得する方法の完全な例またはチュートリアル

+1

MMこれを読んでくださいhttps://developer.android.com/topic/libraries/data-binding/index.html –

+0

@Charuක私はそれを読んでいますが、データバインドの日付時刻をフォーマットするコンテキストを取得するにはどうすればよいですか? –

答えて

2

日付と時刻をフォーマットする最も良い方法は、文字列フォーマットです。 DATEFORMATは、このようなリソースである場合は

<TextView android:text="@{@string/dateFormat(user.birthday)}" .../> 

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

と誕生日が長いたとえば、あなたはこれを使用することができます。時間と日付に関連する詳細な書式設定情報については、date formatter documentationを参照してください。

Android DataBinding where to get context?では、私は1つのオプションを挙げましたが、現在も利用可能な1つを示唆しています。次に、あなたのコンバータクラスは、このようなものだろう

<TextView android:text="@{Converters.formatDate(context, user.birthday, dateFlags)}" .../> 

:あなたは、ルートビューのコンテキストでビルトインcontext変数を使用することができる

public class Converters { 
    public static String formatDate(Context context, long timeMillis, int dateFlags) { 
     return DateUtils.formatDateTime(view.getContext(), timeMillis, 
      dateFlags) 
    } 
} 

をしかし、私はそれとして最初にお勧めします簡単で柔軟性があり、少ないコードを使用します。あなたの日付と時刻のフォーマットを単一のロケールに固定するわけではありません。

+0

私を助けてくれてありがとう。しかし、私は、デバイスの現在の日付設定を取得するための2番目の助けを参照してください。最初はそれをするのに役立つでしょうか? <:layout_width = "match_parent" アンドロイド:layout_height = "wrap_content" アンドロイド:テキスト= "@ {Converters.formatDate(文脈、viewModel.date)}" /のTextView アンドロイド> コンパイラIは を入れしかし 理解できません。 データバインディングエラーが発生します。**** msg:識別子には、XMLファイルのユーザー定義型が必要です。コンバーターに欠けています –

+0

タグにを追加しました。しかし、デバイスの現在の日付設定を取得する最初の方法について説明してもよろしいですか? –

+1

あなたは '@ {@ string/dateFormat(System.currentTimeMillis())}で現在の時刻を渡すことができます。 –

関連する問題