android data binding jetpack VII
阿新 • • 發佈:2018-12-11
解決前面 item imageview如果和一個url繫結,怎麼來展示。
BindingAdapter
字面意思:繫結適配???
推薦大神文章:https://www.jianshu.com/p/686bfc58bbb0
不再多說了。記錄自己的理解。
當要給一個View繫結一個數據,但資料不能直接滿足需求。比如用一個View來展示金錢。格式是:$1000.00。
如果返回資料只有1000.00我們要加上$符。直接把數字繫結給view就不能滿足了。
現在需要建立新的繫結過程。
可以這樣寫:
@BindingAdapter("android:text") publicstatic void setTxt(final TextView tv, String str) { tv.setText("$:" + str); }
這個方法可以扔在任何一個類裡。註解要自動解析並起作用。註解的引入有時候讓程式變得難以理解。
佈局繫結不變。
結果:
在所有的textview text 繫結裡都起作了。說明這個繫結規則是全域性。
所以也不能這麼改了。
觀察一下實現過程:
整個定義的意思是:現在我們在全域性建立一個繫結規則的,對於這個屬性,使用
這個方法來繫結。
如果自定義一個規則如下:
@BindingAdapter("app:money")public static void setMoney(final TextView tv, String str) { tv.setText("$:" + str); }
然後在xml中使用。把原來的text改回去。
app這個命空間說是隨便起,因為執行過程會忽略。
看結果:
正是我們想要的,字元前面加了$.也就是我們定義的運算結果。
回過來看前面的程式碼:
給ImageView 加了一個屬性規則叫:,然xml中繫結使用。最終展示了一個圖片資源對imageview.
更深入理解請看官言文件和原始碼。
總結:1.BindingAdapter是建一個繫結規則。
2.這個規則寫在哪兒都行。
3.是全域性的,所有人通用。
宣告:本系列文字可能不太嚴謹,請閱讀者自我甄別。