Android懒惰数据绑定可能吗?

raz*_*zle 6 android lazy-initialization android-databinding

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)
Run Code Online (Sandbox Code Playgroud)

Joe*_*her 3

这似乎没有意义,数据绑定将忽略空变量,因此不应抛出空指针,也就是说,我相信,这是其最受推崇的功能之一。如果您需要在异步调用等之后修改变量,您可以使用dataBinding.executePendingBindings()

\n\n

来自文档

\n\n
\n

生成的绑定类将为每个描述的变量提供一个 setter 和 getter。变量将采用默认的 Java 值,直到 setter 被调用 \xe2\x80\x94 null(引用类型为 null,int 为 0,boolean 为 false 等)。

\n
\n\n

和

\n\n
\n

生成的数据绑定代码自动检查空值并避免空指针异常。例如,在表达式@{user.name}中,如果user为null,则user.name将被分配其默认值(null)。如果您引用 user.age,其中age是一个 int,那么它将默认为 0。

\n
\n