【发布时间】:2018-09-21 11:07:24
【问题描述】:
我想问是否可以在android中制作2个或更多的DataBindingComponent类?因为我想在绑定中转义静态方法,所以我尝试将注入与 DataBindingComponent 一起使用,但我得到了 Class 'AppDataBindingComponent' 的错误必须被声明为抽象或在 'DataBindingComponent' 中实现抽象方法 'getLoginViewDataBinding' 因为这个错误,我无法制作非静态的。
这是我遇到问题的课程
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;
}
}
【问题讨论】:
-
你找到解决办法了吗?
-
稍后不,我只是在 MVVM 方法和一些 MVC 方法之间使用混合编程来做......,因为当我看到任何解决方案时,我想要的这种答案都有解决方案。 ..
-
我已经找到了解决方案。我会尽快发布的
标签: android android-databinding non-static