我有用於顯示時間的TextView。我想使用Android的DataBinding插件。 對於格式化時間,我使用了帶有Context實例的DateUtils.formatDateTime(context,int,int)方法。是否有可能獲得上下文包含元素?或者我必須使用老派的方式?Android DataBinding從哪裏獲取上下文?
謝謝
我有用於顯示時間的TextView。我想使用Android的DataBinding插件。 對於格式化時間,我使用了帶有Context實例的DateUtils.formatDateTime(context,int,int)方法。是否有可能獲得上下文包含元素?或者我必須使用老派的方式?Android DataBinding從哪裏獲取上下文?
謝謝
想到我應該回答,而不是放入評論。當rc2發佈時你會有更多的選擇。在rc1中,可以將變量中的上下文傳遞給綁定,然後將其作爲參數傳遞給方法。另外,您也可以爲數據創建一個自定義屬性綁定:
@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}"/>
有沒有比這更好的解決方案?我有一個類似的情況,我需要一個上下文(我需要一個格式化字符串的本地化值),並希望知道如何讓框架提供它。我已經實現了這個解決方案,但是失去了數據綁定提供的大部分清晰度。編輯:[這個提交](https://github.com/adamsp/wsnz-android/commit/fe74f65979dbd97fc5f7ca2496732753f4a2a16c)是我正在工作。 –
上下文現在可用作自動變量「上下文」。但是,針對您的具體需求,還有更好的解決方案。字符串格式化是表達式語言的一部分,所以使用類似'@ {@ string/myformat(var1,var2)}' –
太好了,謝謝!我會在今天晚上嘗試一下。有什麼地方我可以按照這些變化? [文檔](http://developer.android.com/tools/data-binding/guide.html)沒有提到這一點,我正努力在任何地方找到更改日誌。 –
您也可以使用當前視圖context
爲做這樣的事情在你看來參數。用於產生在根據需要結合 表達式
...
android:text="@{yourModelHere.yourModelMethodHere(context)}"
...
你從哪裏得到的? – dominik4142
@ dominik4142你可以看看[這裏](http://developer.android.com/intl/es/tools/data-binding/guide.html#variables)。'生成一個名爲context的特殊變量,用於綁定上下文的值是來自根View的getContext()的Context。上下文變量將被具有該名稱的顯式變量聲明覆蓋。「 – epool
是否有任何活動的特殊字詞 –
命名上下文中的特殊變量。上下文的值是來自 根視圖的getContext()的上下文。上下文變量將被 覆蓋一個帶有該名稱的顯式變量聲明。
換句話說,每當你需要通過上下文時,只需使用「context」,如。
您可以將它作爲變量傳遞給數據綁定。在rc2中,您將擁有與DataBindingComponent相關的其他選項。或者,您可以創建一個可以在多個屬性上運行的BindingAdapter。 –