将 AsyncLayoutInflater 与 DataBinding 结合使用

Use AsyncLayoutInflater with DataBinding

我目前使用 DataBindingUtil.inflate(inflater, layoutId, parent, attachToParent) 方法膨胀我的大部分布局。

但我看到它们是 AsyncLayoutInflater,因为 Support Library revision 24 允许 inflation 在单独的线程上发生。我想在我的应用程序的某些部分使用这种机制,但我不想为此放弃使用 databinding

DataBindingUtil 不包含任何像 inflateAsync() 这样的方法。但它是否计划为此添加支持?或者他们是一种结合 AsyncLayoutInflater 和使用 databinding 的方法?

我尝试在 DataBindingUtilinflate 方法中使用 AsyncLayoutInflater 但实际上 AsyncLayoutInflater 不是原始 LayoutInflater 的子类。

感谢阅读!

无法将 AsyncLayoutInflater 与数据绑定一起使用,但我的问题是,它真的有用吗?异步扩充布局有它的优势,但如果您正在使用数据绑定,那么当您尝试将数据绑定到视图时,您 运行 存在视图未被扩充的风险,因为没有诸如waitForBinding().

您可以只使用 DataBindingUtil.bind(view) 绑定到展开布局的根目录。

new AsyncLayoutInflater(this).inflate(R.layout.my_layout, null, new AsyncLayoutInflater.OnInflateFinishedListener() {
    @Override
    public void onInflateFinished(@NonNull View view, int resid, @Nullable ViewGroup parent) {
        MyLayoutBinding binding = DataBindingUtil.bind(view);
    }
});