其他分享
首页 > 其他分享> > Android为什么在RecyclerView中使用executePendingBindings

Android为什么在RecyclerView中使用executePendingBindings

作者:互联网

我最近一直在使用数据绑定,并且遇到了executePendingBindings方法.该文档显示了很少的内容,我不明白它是如何工作的或何时使用.

许多开发人员在onBindViewHolder回调中使用executePendingBindings,但无论是否使用回收器,我自己在回收器中都看不到任何差异.

有人可以解释为什么在回收站中使用它很重要吗?谢谢

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

            Customer customer= List.get(position).second;
            ((CustomerViewHolder)holder).binding.setCustomer (customer)

            ((CustomerViewHolder)holder).binding.executePendingBindings();


}

解决方法:

对绑定进行一些更改并不意味着它将立即对您的View产生影响.更改绑定中的内容意味着您实际上是在计划要在不久的将来应用的那些更改.这有很多原因,性能就是其中之一.

想象一下,您的xml中有一些复杂的表达式.在设置所有变量之前,您不想弄清楚与绑定变量有关的所有内容.那会浪费资源.

您可以在生成的绑定Java类本身中查看有关它的更多信息.我建议您通读它.

调用executePendingBindings意味着您实质上是在调用该绑定时立即强制框架执行它到目前为止在绑定上需要做的所有事情.

如果您的情况不需要,则不必在适配器中执行此操作.有人这样做是为了确保在继续操作之前将所有内容正确设置在一个项目上.所以例如不会出现像在上一轮绑定执行之前再次调用onBind的情况……或类似的情况……

编辑1:

另外…不要忘记(对于最近的将来)安排执行更改的时间安排,它使您可以在绑定不同于UI线程的线程时设置setVariables.因为设置变量不会影响视图本身.

编辑2:

查看生成的Java类的最简单方法是:

>导航->文件

navigate-file

>在UpperCamelCase中输入绑定文件的名称,然后输入Binding(例如,如果您的布局是activity_main,则键入ActivityMainBinding)

activity_main_binding

标签:android-recyclerview,android-databinding,android
来源: https://codeday.me/bug/20191108/2008124.html