BindingAdapter可以做一些自定義的屬性,解決一些databinding在屬性上的問題。
@BindingAdapter({"attribute_name1"})  
public static void methodName(View view,Type type1){  
    //do something… 
}
註解@BindingAdapter("")為View的元件新增使用的屬性,其名稱可以隨意取methodName(View view,Type type)View為UI,Type是根據你的需求去設定類型(ex:String、Boolean、int等等)。
@BindingAdapter({"attribute_name1","attribute_name2",……})  
public static void methodName(View view,Type type1,Type type2,……){  
    //do something… 
}  
簡單的實作:按下按鈕前,是灰色的心型,按下按鈕後,會變成粉色的心型
@BindingAdapter("heart")
    public static void setHeart(Button button,Boolean colorChange){
       if (!colorChange){
            button.setBackgroundResource(R.drawable.ic_baseline_favorite_24_grey);
        }else{
            button.setBackgroundResource(R.drawable.ic_baseline_favorite_24_pink);
        }
    }
setSrc(Button button,boolean colorChange)第一個參數是將src屬性新增到button上,每個button都可以使用這個屬性,第二個參數是使用app:heart=這個屬性時,接收的類型是boolean。
<Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onSendMsg"
            android:text="click1"
            android:textSize="40sp" />
 <Button
            android:layout_width="50sp"
            android:layout_height="50sp"
            android:layout_marginLeft="180dp"
            app:heart="@{dataItem.colorChange}" />
這樣能為Button增加一個app:heart=的屬性
MainActivity2
public class MainActivity2 extends AppCompatActivity{
    ActivityMain2Binding main2Binding;
    DataItem dataItem;
    ClickHandler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }
    private void init() {
        main2Binding=DataBindingUtil.setContentView(this,R.layout.activity_main2);
        dataItem=new DataItem();
        main2Binding.setDataItem(dataItem);
        main2Binding.setView(this);
        handler=new ClickHandler(MainActivity2.this);
        main2Binding.setHandler(handler);
    }
    public void onSendMsg(View view) {
        if (!dataItem.isColorChange()) {
            dataItem.setColorChange(true);
            Log.d("123", "pink");
        }else {
            dataItem.setColorChange(false);
            Log.d("123", "grey");
        }
        main2Binding.setDataItem(dataItem);
    }
}
成圖:

Log:
BindingAdapter就介紹到此。