[英]Android lazy data binding possible?
Android数据绑定支持最酷的功能之一是它还为View设置了ID字段。 这样可以整理代码库,因为不需要字段或findViewById()
调用。
但问题是绑定实例只能通过bind()
调用来检索,该调用往往会调度绑定。 当异步接收数据并且通常抛出NullPointerException
时,这很糟糕。
可以检索带有View字段的绑定实例减去实际的数据绑定过程吗?
堆栈跟踪:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.app.android.databinding.ActivityRestaurantDetailsBinding.executeBindings(ActivityRestaurantDetailsBinding.java:381)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:350)
at android.databinding.ViewDataBinding$6.run(ViewDataBinding.java:167)
at android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:137)
at android.view.View.dispatchAttachedToWindow(View.java:14525)
这似乎没有意义,数据绑定将忽略空变量,因此不应该抛出空指针,也就是说,我相信,它是其最受推崇的功能之一。 如果你需要在异步调用等之后修改变量,你可以使用dataBinding.executePendingBindings()
来自文档
生成的绑定类将为每个描述的变量设置setter和getter。 变量将采用默认的Java值,直到调用setter为止 - 对于引用类型为null,对于int为0,对于boolean为false等。
和
生成的数据绑定代码会自动检查空值并避免空指针异常。 例如,在表达式@ {user.name}中,如果user为null,则将为user.name分配其默认值(null)。 如果您引用的是user.age,其中age是一个int,那么它将默认为0。
java.lang.Boolean
遇到了同样的问题。 通过使用原始boolean
类型来解决。
<variable
name="var"
type="boolean" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.