DataBinding 注意事項 -- ListView (1)

在 ListView 的適配器中使用數(shù)據(jù)綁定時,有以下特別需要注意的地方:

1. DataBindingUtils.inflate ( ) 和 binding.getRoot( )

adapter 的 getView( ) 方法中,如果converView 為null 時,使用 DataBindingUtils.inflate ( ) 方法填充布局。然后 獲取binding 對應(yīng)的root的布局,作為ConvertView 的值。同時,在綁定完bean類數(shù)據(jù),返回view之前,必須加入** binding.executePendingBinding( )**方法,:

Paste_Image.png

2. BaseObservable

為了實(shí)現(xiàn)當(dāng)bean類數(shù)據(jù)發(fā)生變化時,及時通知適配器去更新視圖,需要讓bean類繼承BaseObservable ,在bean類成員變量的setXXX( )方法中加入 notifyPropertyChanged(BR.XXX); ,在getXXX( )方法上加 @Bindable 注解

Paste_Image.png

3 示例代碼:

DataBinding 在LV中使用的詳細(xì)示例可參考:https://github.com/CnPeng/MyDemosFrom2016_12 中的 a_12_GetLocalFiles_VP_FM

4 補(bǔ)充:

在實(shí)際使用的時候,出現(xiàn)了這么一個情況,Lv 下面跟著一個EditText , 在展示LV的內(nèi)容時,ET上面莫名其妙的多出了一片空白,如下圖


LV 和 ET 之間多了一片空白

然后,我嘗試著給LV 和ET分別設(shè)置背景,然后就發(fā)現(xiàn)是這片空白是被LV控制的,如下圖:


Paste_Image.png

然后,仔細(xì)排查代碼,發(fā)現(xiàn)是因?yàn)樵贏dapter中使用了數(shù)據(jù)綁定,但是在綁定bean類之后,直接就return convertView, 忘記了 binding.executePendingBindings( ) , 加入這行代碼后,一切就正常了。
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容