Android에서 데이터 바인딩을 사용하는 법만 배우면됩니다. 왜 BindingAdapter을 정적 방법으로 설정해야하는지 묻고 싶습니다. 내가 비 정적 방법으로 만들 수 있다면. 내가해야 할 일은 무엇인가? 내 이미지를 내 자신의 ImageLoader 객체에로드해야합니다.BindingAdapter가 정적 메서드 여야하는 이유는 무엇입니까?
4
A
답변
8
BindingAdapter에 이 없으므로이 정적입니다. 정적 인 경우 작업하는 것이 훨씬 쉽습니다. 인스턴스 메서드를 사용해야하는 경우에는 가능하지만 DataBindingComponent를 통해 인스턴스에 도달 할 수있는 방법을 제공해야합니다.
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의 방법으로 제공해야하는 인스턴스를 포함하는 어떤 클래스 :
은의 당신이 인스턴스 BindingAdapter가 1 개 있다고 가정 해 보겠습니다. 그것은 당신이 구현 생성 된 인터페이스와 메소드는 클래스의 이름을 기반으로합니다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()
을 사용할 수도 있습니다.