ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android为什么在RecyclerView中使用executePendingBindings

2019-11-08 12:34:01  阅读:350  来源: 互联网

标签:android-recyclerview android-databinding android


我最近一直在使用数据绑定,并且遇到了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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有