gpt4 book ai didi

Android 为什么在 RecyclerView 中使用 executePendingBindings

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:23 25 4
gpt4 key购买 nike

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


}

最佳答案

对您的绑定(bind)进行一些更改并不意味着它会对您的 View 产生立即效果。更改绑定(bind)中的内容意味着您实际上是在安排这些更改在最近的将来应用。这有很多原因,性能是其中之一。

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

您可以在生成的绑定(bind) java 类本身中看到更多相关信息。我建议您仔细阅读。

调用 executePendingBindings 意味着您实际上是在强制框架在调用绑定(bind)时执行到目前为止它需要执行的所有操作。

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


编辑 1:

另外...不要忘记执行更改的调度(最近的将来)是允许您在 binding 上从不同于UI 线程。因为设置变量不会触及 View 本身。


编辑 2:

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

  1. 导航 -> 文件

navigate-file

  1. 以 UpperCamelCase 键入绑定(bind)文件的名称,后跟 Binding(例如,如果您的布局是 activity_main,请键入 ActivityMainBinding)

activity_main_binding

关于Android 为什么在 RecyclerView 中使用 executePendingBindings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com