Я хотел бы спросить, возможно ли сделать 2 или более класса DataBindingComponent в Android?потому что я хочу избежать статического метода в привязке, поэтому я пытаюсь использовать инъекцию с DataBindingComponent, но я получил ошибку Класс 'AppDataBindingComponent' должен быть либо объявлен абстрактным, либо реализовать абстрактный метод 'getLoginViewDataBinding' в 'DataBindingComponent' из-за этой ошибки я не могу сделать нестатическую.
это класс, с которым у меня возникла проблема
public class AppDataBindingComponent implements android.databinding.DataBindingComponent {
@Override
public RecyclerViewDataBinding getRecyclerViewDataBinding() {
return new RecyclerViewDataBinding();
}
}
Первый класс связывания
public class RecyclerViewDataBinding {
@BindingAdapter({"app:adapter", "app:data"})
public void bind(RecyclerView recyclerView, DataAdapter adapter, List<DataModel> data) {
recyclerView.setAdapter(adapter);
adapter.updateData(data);
}
}
Второй класс привязки
public class LoginViewDataBinding {
@BindingAdapter({"validation", "errorMsg"})
public void setErrorEnable(TextInputLayout textInputLayout, StringRule stringRule,
final String errorMsg) {
Observable<CharSequence> textObservable = RxTextView.textChanges(
Objects.requireNonNull(textInputLayout.getEditText()));
compositeDisposable.add(textObservable
.map(charSequence -> {
......
})
.distinctUntilChanged()
.replay(1).refCount()
.subscribe());
}
}
В основном классе я вызываю DataBindingComponent
public class MainActivity extends AppCompatActivity {
private DataViewModel dataViewModel;
private ActivityMainListMvvmBinding activityBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bind();
}
private View bind() {
activityBinding = DataBindingUtil
.setContentView(this, R.layout.activity_main_list_mvvm, new AppDataBindingComponent());
dataViewModel = new DataViewModel();
activityBinding.setViewModel(dataViewModel);
return activityBinding.getRoot();
}
}
Проблема решается, если я поставлю getLoginViewDataBinding
public class AppDataBindingComponent implements android.databinding.DataBindingComponent {
@Override
public RecyclerViewDataBinding getRecyclerViewDataBinding() {
return new RecyclerViewDataBinding();
}
@Override
public LoginViewDataBinding getLoginViewDataBinding() {
return null;
}
}
ответы, которые я хочу получить, таковы: (возможно ли это?)
public class AppDataBindingComponent implements android.databinding.DataBindingComponent {
@Override
public RecyclerViewDataBinding getRecyclerViewDataBinding() {
return new RecyclerViewDataBinding();
}
}
public class LoginDataBindingComponent implements android.databinding.DataBindingComponent {
@Override
public LoginViewDataBinding getLoginViewDataBinding() {
return null;
}
}