Nic*_*ick 0 data-binding android android-databinding
我最近一直在使用数据绑定,并且遇到了 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();
}
Run Code Online (Sandbox Code Playgroud)
更详细的解释可以参考这个例子。
当不使用executePendingBindings()列表时,您绑定它时会闪烁,例如,当您打开一个新列表时,您会注意到这种闪烁/抖动效果,这是因为列表已填充,然后在下一帧中它被绑定。
如果您不希望这种情况发生并立即执行,则绑定此方法将防止闪烁并立即绑定您的数据。
executePendingBindings()如果您看到,由于视图被初始化,然后数据绑定,然后在下一帧中发生视图绑定,因此存在闪烁效果。
executePendingBindings()如果你看到这里,没有闪烁的效果,你可以看到列表已经正常绑定并且可以正常工作了。
你只能executePendingBindings()在UI线程上使用,这意味着在onBindViewHolder调用的时候,你将需要在绑定上使用它,这样做将保证你是在UI上调用它。
override fun onBindViewHolder(binding: MyBindingClass, position: Int, viewType: Int) {
//Your binding code
binding.executePendingBindings()
}
Run Code Online (Sandbox Code Playgroud)
始终在 onBindViewHolder 的末尾调用它
executePendingBindings() 功能是立即绑定。
当变量或可观察对象发生变化时,绑定被安排在下一帧之前发生变化。但是,有时必须立即执行绑定。要强制执行,请使用 executePendingBindings() 方法。
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |