databinding显示为null的特殊情况以及多种姿势的处理办法
简书链接:databinding显示为null的特殊情况以及多种姿势的处理办法
文章字数:274,阅读全文大约需要1分钟
1 | app:text="@{model.nickname??@string/nologin}" |
上面的代码如果进入app能马上执行setModel()
那么会完全正常的显示为未登录,
但是有一种情况是模型可能要过一段时间才调用setModel,会导致 app:text="@{@string/young_zhiye(model.occupation)??@string/young_zhiye(``)
显示为职业显示为:null
那么需要改成这样,先判断model是否等于空!
第一次修改
1 | app:text="@{model!=null?@string/young_zhiye(model.occupation):``}" |
xml代码如下:
1 |
|
第二次修改
经过第二次修改,变成了下面的这个样子才能解决为null又要使用个性化占位符的情况
1 | app:text="@{model!=null?(@string/young_zhiye(model.occupation??@string/zanweitianxie)):@string/young_zhiye(@string/zanweitianxie)}" |
表示如果model为空或者model.occupation为空就显示职业:暂未填写
第三次修改
第三次修改,如果服务器返回的是空字符串””那么这个写法也没法显示这种个性化为空 于是乎又改成了这样才能将才能解决问题。。。
1 | app:text="@{model!=null?(TextUtils.isEmpty(model.occupation)?@string/young_zhiye(@string/zanweitianxie):@string/young_zhiye(model.occupation)):@string/young_zhiye(@string/zanweitianxie)}" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 情迁博客!
评论