使用AsyncLayoutInflater与DataBinding。

8
我目前使用DataBindingUtil.inflate(inflater, layoutId, parent, attachToParent)方法来填充大多数布局。但是我发现自从Support Library revision 24以来,有一个AsyncLayoutInflater可以让填充在单独的线程上进行。我想在我的应用程序的某些部分中使用这种机制,但我不想放弃使用databindingDataBindingUtil没有类似于inflateAsync()的方法。但是是否计划添加对此的支持?还是有一种方法可以同时使用AsyncLayoutInflaterdatabinding
我尝试在DataBindingUtilinflate方法中使用AsyncLayoutInflater,但实际上AsyncLayoutInflater不是原始LayoutInflater的子类。
感谢阅读!
2个回答

15
你可以直接使用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);
    }
});

1

使用AsyncLayoutInflater无法与数据绑定一起使用,但我的问题是,它实际上有用吗?异步膨胀布局可能具有其优点,但如果您正在使用数据绑定,则在尝试将数据绑定到视图时,存在视图未被膨胀的风险,因为没有像waitForBinding()这样的方法。


是的,当您构建复杂的用户界面时,它非常有用,如果您只构建简单的用户界面,则不会欣赏它。您可以在异步加载复杂UI时制作简单的加载UI。 - Renz Carlo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接