1. 程式人生 > >android data binding jetpack VII

android data binding jetpack VII

解決前面 item imageview如果和一個url繫結,怎麼來展示。

BindingAdapter 

字面意思:繫結適配???

推薦大神文章:https://www.jianshu.com/p/686bfc58bbb0

 不再多說了。記錄自己的理解。

當要給一個View繫結一個數據,但資料不能直接滿足需求。比如用一個View來展示金錢。格式是:$1000.00。

如果返回資料只有1000.00我們要加上$符。直接把數字繫結給view就不能滿足了。

現在需要建立新的繫結過程。

可以這樣寫:

 @BindingAdapter("android:text")
    public
static 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.是全域性的,所有人通用。

 

 

宣告:本系列文字可能不太嚴謹,請閱讀者自我甄別。