DataBinding 注意事项 -- ListView (1)

在 ListView 的适配器中使用数据绑定时,有以下特别需要注意的地方:

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

adapter 的 getView( ) 方法中,如果converView 为null 时,使用 DataBindingUtils.inflate ( ) 方法填充布局。然后 获取binding 对应的root的布局,作为ConvertView 的值。同时,在绑定完bean类数据,返回view之前,必须加入** binding.executePendingBinding( )**方法,:

Paste_Image.png

2. BaseObservable

为了实现当bean类数据发生变化时,及时通知适配器去更新视图,需要让bean类继承BaseObservable ,在bean类成员变量的setXXX( )方法中加入 notifyPropertyChanged(BR.XXX); ,在getXXX( )方法上加 @Bindable 注解

Paste_Image.png

3 示例代码:

DataBinding 在LV中使用的详细示例可参考:https://github.com/CnPeng/MyDemosFrom2016_12 中的 a_12_GetLocalFiles_VP_FM

4 补充:

在实际使用的时候,出现了这么一个情况,Lv 下面跟着一个EditText , 在展示LV的内容时,ET上面莫名其妙的多出了一片空白,如下图

LV 和 ET 之间多了一片空白

然后,我尝试着给LV 和ET分别设置背景,然后就发现是这片空白是被LV控制的,如下图:

Paste_Image.png

然后,仔细排查代码,发现是因为在Adapter中使用了数据绑定,但是在绑定bean类之后,直接就return convertView, 忘记了 binding.executePendingBindings( ) , 加入这行代码后,一切就正常了。
Paste_Image.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CnPeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值