直播系統平臺搭建,DataBinding自定義雙向繫結

zhibo系統開發發表於2021-11-01

直播系統平臺搭建,DataBinding自定義雙向繫結實現的相關程式碼

這裡以CompoundButton系列控制元件(CheckBox、Switch、ToggleButton等)為例雙向繫結Checked


首先是寫入Checked的方法


@BindingAdapter("isCheck")
fun setCheck(view: CompoundButton, isCheck:Boolean?){
    if(isCheck != null && view.isChecked != isCheck)
        view.isChecked = isCheck
}


其中BindingAdapter需要兩個引數,value表示自定義屬性,requireAll表示是否需要全部引數,這裡只需要一個引數,所以使用預設值就行


然後是輸出Checked的方法


@InverseBindingAdapter(attribute = "isCheck",event = "checkAttrChanged")
fun getCheck(view: CompoundButton?):Boolean{
    return view?.isChecked?:false
}


InverseBindingAdapter接收兩個引數,attribute表示在xml使用的自定義屬性,event表示觸發更改事件的監聽器


接下來寫getCheck的觸發事件,一般要在監聽到check更改時觸發,所以要在setOnCheckedChangeListener裡監聽


@BindingAdapter("checkAttrChanged")
fun setCompoundCheckListener(view: CompoundButton,checkAttrChanged:InverseBindingListener){
    view.setOnCheckedChangeListener { buttonView, isChecked ->
        checkAttrChanged.onChange()
    }
}


BindingAdapter傳入InverseBindingAdapter的event,並且在監聽到check更改時,通過InverseBindingListener.onChange()通知isCheck修改


使用:

        <androidx.appcompat.widget.SwitchCompat
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            isCheck="@={vm.check}"/>


以上就是 直播系統平臺搭建,DataBinding自定義雙向繫結實現的相關程式碼,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2839992/,如需轉載,請註明出處,否則將追究法律責任。

相關文章