【问题标题】:Why BindingAdapter must be static method?为什么 BindingAdapter 必须是静态方法?
【发布时间】:2017-01-29 21:24:06
【问题描述】:

我刚刚学习了如何在 Android 上使用数据绑定。我想问为什么BindingAdapter必须设置为静态方法?如果我可以使它成为非静态方法。我必须做什么?我需要将图像加载到我自己的 ImageLoader 对象中。

【问题讨论】:

    标签: java android data-binding static-methods android-databinding


    【解决方案1】:

    BindingAdapter 没有 是静态的。如果它是静态的,那么使用起来会容易得多。如果必须使用实例方法,则可以,但必须提供通过 DataBindingComponent 访问实例的方法。

    假设您有一个实例 BindingAdapter:

    public class ImageBindingAdapters {
        private ImageLoader imageLoader;
    
        public ImageBindingAdapters(ImageLoader imageLoader) {
            this.imageLoader = imageLoader;
        }
    
        @BindingAdapter("url")
        public void setImageUrl(ImageView imageView, String url) {
            imageLoader.loadInto(imageView, url);
        }
    }
    

    首先,任何包含实例 BindingAdapter 的类都必须作为 DataBindingComponent 的方法提供。它是您实现的生成接口,方法基于类的名称:

    public class MyComponent implements DataBindingComponent {
        @Override
        public ImageBindingAdapters getImageBindingAdapters() {
            //... whatever you do to create or retrieve the instance
            return imageBindingAdapter;
        }
    }
    

    现在,您必须在绑定期间提供组件。例如:

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        MyBinding binding = DataBindingUtil.setContentView(this,
                R.layout.my, new MyComponent());
        binding.setData(/* whatever */);
    }
    

    因此,如果您使用依赖注入,则主要使用它。如果您不需要为每个绑定更改组件,也可以使用DataBindingUtil.setDefaultComponent()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-18
      • 2014-05-27
      • 2012-04-11
      • 2011-06-30
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2018-11-01
      相关资源
      最近更新 更多