Android 中的绑定适配器

BindingAdapter in Android

我正在关注有关 RecyclerView 和数据绑定的 course

我读过What is the use of binding adapter in Android?

除了 make custom/more complex setter,使用 BindingAdapter 比 "normal" 有什么好处?性能有提升吗?

版本 1:

版本 2(数据绑定):

绑定适配器在自定义视图方面为您提供了一个非常好的功能。 看起来很奇怪!

首先,假设你有一个显示国旗的ImageView。

接受:国家代码(字符串)

动作:显示国家的国旗,如果国家代码为空,则使ImageView GONE。

@BindingAdapter({"android:setFlag"})
public static void setFlagImageView(ImageView imageView, String currencyCode) {
    Context context = imageView.getContext();
    if (currencyCode != null) {
        try {
            Drawable d = Drawable.createFromStream(context.getAssets().open("flags/"+currencyCode.toLowerCase()+".png"), null);
            imageView.setImageDrawable(d);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    else{
            imageView.setVisibility(View.GONE);
    }
}

所以现在您可以在任何其他地方重用这个 BindinAdapter。

喜欢 DataBinding 的人,看到他们可以减少代码量并在 xml 中编写一些逻辑。而不是辅助方法。

其次,通过数据绑定,你将忽略findViewById,因为会为你创建一个生成的文件。

关于性能,我没有在官方文档中找到任何表明 BindingAdapter 提高性能的信息。