【发布时间】:2016-11-01 19:56:52
【问题描述】:
我觉得每次我问这样的问题时,人们总是要代码,但后来我发布了代码,没有人再次回复,因为我猜代码太长了。所以这次我会尽量简明扼要。
考虑一个扩展这个类的适配器类,它提供了扩展 RecyclerViews 的功能:
public class MyAdapter extends ExpandableRecyclerViewAdapter<MyParentViewHolder, MyChildViewHolder> ...
但是,我通常有另一个单独的适配器类(我尝试自己制作),它提供了向 RecyclerView 项目添加复选框/提供多选功能的功能。用法示例:
public class MyOtherAdapter extends CheckableAdapter<SomeType, SomeViewHolder> ...
该课程恰好足够短,可以发布,以防万一:
public abstract class CheckableAdapter<T extends CheckableObject, VH extends CheckableViewHolder> extends RecyclerView.Adapter<VH> {
private List<T> list;
private boolean checkMode;
public CheckableAdapter(List<T> list) {
this.list = list;
this.checkMode = false;
}
@Override
public void onBindViewHolder(VH holder, int position) {
final CheckableObject checkableObject = list.get(position);
holder.checkBox.setOnCheckChangedListener( ... );
if (isCheckModeOn()) {
...
} else {
...
}
}
public boolean getCheckMode() { return checkMode; }
public void setCheckMode(boolean checkMode) { this.checkMode = checkMode; }
}
好的,现在考虑一种情况,您需要同时扩展 ExpandableRecyclerViewAdapter 和 CheckableAdapter,但您不能在 Java 中扩展两个类。换句话说,您希望将这两个类的所有功能都带入您的类中。
解决此类案件的正确方法是什么?谁能提供一个使用我在这里定义的类的例子?
【问题讨论】:
-
考虑使用组合而不是继承。
-
你能提供一个使用我上面写的类定义的例子吗?
标签: java android oop multiple-inheritance extends