Po przeczytaniu odpowiedzi z @tynn, klasa DataBindingComponent może również być zakresem "obiektu" powiązania danych. Zamiast ustawiania wszystkich metod w sposób statyczny, następujący przykład może być użyty do rozszerzenia i niestandardowego. Na przykład, ustawiamy 3 metody bindowania dla ImageView, TextView i typu View. Można skonfigurować interfejs pierwszy (jak Retrofit interfejs API dla 2 setup)
1. Instalacja 3 interfejs pierwszy
ImageViewBindingInterface.java
public interface ImageViewBindingInterface {
@BindingAdapter({"bind:imageUrl", "bind:error"})
public void loadImage(ImageView view, String url, Drawable error);
}
TextViewBindingInterface.java
public interface TextViewBindingInterface {
@BindingAdapter({"bind:font"})
void setFont(TextView textView, String fontName);
}
ViewBindingInterface.java
public interface ViewBindingInterface {
@BindingAdapter("android:paddingLeft")
public void setPaddingLeft(View view, int padding);
@BindingAdapter("android:onViewAttachedToWindow")
public void setListener(View view, ViewBindingAdapter.OnViewAttachedToWindow attached);
}
2. DataBindingComponent.java powinny być aktualizowane automatycznie @tynn jak wspomniano poniżej.
Jeśli przyjrzeć się domyślnej klasy DataBindingComponent w Android Studio go znaleźć się w budowie/generowany/źródło/apt/dev.
public interface DataBindingComponent {
example.com.testerapplication.binding.ViewBindingInterface getViewBindingInterface();
example.com.testerapplication.binding.TextViewBindingInterface getTextViewBindingInterface();
example.com.testerapplication.binding.ImageViewBindingInterface getImageViewBindingInterface();
}
3. Zbuduj swoją własną metodę implementacji do wiązania.
BaseImageViewBinding.java
public class BaseImageViewBinding implements ImageViewBindingInterface{
@Override
public void loadImage(ImageView view, String url, Drawable error) {
Picasso.with(view.getContext()).load(url).error(error).into(view);
}
}
BaseTextViewBinding.java
public class BaseTextViewBinding implements TextViewBindingInterface {
@Override
public void setFont(TextView textView, String fontName) {
textView.setTypeface(Typeface.createFromAsset(textView.getContext().getAssets(), "fonts/" + fontName));
}
}
BaseViewBinding.java
public class BaseViewBinding implements ViewBindingInterface {
@Override
public void setPaddingLeft(View view, int padding) {
view.setPadding(padding,
view.getPaddingTop(),
view.getPaddingRight(),
view.getPaddingBottom());
}
@Override
public void setListener(View view, ViewBindingAdapter.OnViewAttachedToWindow attached) {
}
}
4. Ustaw OwnDatabindingComponent
public class MyOwnDefaultDataBindingComponent implements android.databinding.DataBindingComponent {
@Override
public ViewBindingInterface getViewBindingInterface() {
return new BaseViewBinding();
}
@Override
public TextViewBindingInterface getTextViewBindingInterface() {
return new BaseTextViewBinding();
}
@Override
public ImageViewBindingInterface getImageViewBindingInterface() {
return new BaseImageViewBinding();
}
}
5. Konfiguracja domyślna DataBindingComponent we Wniosku
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
DataBindingUtil.setDefaultComponent(new MyOwnDefaultDataBindingComponent());
}
}
Korzystanie z tej metody powinno być w porządku, aby niestandardowe powiązanie danych w sposób niestandardowy i można rozszerzyć.
można śledzić ten oficjalny przewodnik https://developer.android.com/topic/libraries/data-binding/index.html lub w tym samouczku http://www.survivingwithandroid.com/2015/08/android-data -binding-tutorial-2.html –
Wiem, jak używać androida. Ale widziałem tej klasy "DataBindingComponent" jest używany w kilku metodach w klasie "DataBindingUtil". Chciałbym wiedzieć, co to jest i jak można go wykorzystać. –