I have some stuff with similar properties, methods and initialization code. Like
public class LoadElement {
LoadingElementBinding binding;
public LoadElement(ViewGroup parent) {
binding = LoadingElementBinding.inflate(
LayoutInflater.from(parent.getContext()),
parent,
false));
binding.setLifecycleOwner(ViewTreeLifecycleOwner.get(parent));
}
public void doDomething() {
//somehing do with binding
}
}
public class ErrorElement {
ErrorElementBinding binding;
public ErrorElement(ViewGroup parent) {
binding = ErrorElementBinding.inflate(
LayoutInflater.from(parent.getContext()),
parent,
false));
binding.setLifecycleOwner(ViewTreeLifecycleOwner.get(parent));
}
public void doDomething() {
//somehing do with binding
}
}
I wanna group this code and write some like
public abstract class BindingElement <T extends ViewDataBinding>{
T binding;
public BindingElement (ViewGroup parent) {
binding = createBinding(LayoutInflater.from(parent.getContext()), parent);
binding.setLifecycleOwner(ViewTreeLifecycleOwner.get(parent));
}
abstract T createBinding(ViewGroup parent, LayoutInflater inflater);
public void doDomething() {
//somehing do with binding
}
}
public class LoadElement extends BindingElement<LoadingElementBinding>{
public LoadElement(ViewGroup parent) {super(parent)}
@Override LoadingElementBinding createBinding(ViewGroup parent, LayoutInflater inflater){
return LoadingElementBinding.inflate(
LayoutInflater.from(parent.getContext()),
parent,
false));
}
}
public class ErrorElement extends BindingElement<ErrorElementBinding>{
public ErrorElement(ViewGroup parent) {super(parent)}
@Override ErrorElementBinding createBinding(ViewGroup parent, LayoutInflater inflater){
return ErrorElementBinding.inflate(
LayoutInflater.from(parent.getContext()),
parent,
false));
}
}
It is grouped and i will never forget determine my property (binding) when i add new similar class. But this code is wrong cause i use non final or abstract function from the constructor.
But how can i group my code correctly in java oop style?