我覺得每次我提問這樣的問題時,人們總是問代碼,但是我發佈了代碼,沒有人再次迴應,因爲我猜代碼太長了。所以這次我會盡量簡短。解決多繼承限制的正確方法是什麼?
考慮一個適配器類擴展此類,這對於擴大RecyclerViews提供的功能:
public class MyAdapter extends ExpandableRecyclerViewAdapter<MyParentViewHolder, MyChildViewHolder> ...
不過,我通常有另一個單獨的適配器類(即我試圖使自己),對添加複選框提供的功能RecyclerView項目/提供多選。用法示例:
public class MyOtherAdapter extends CheckableAdapter<SomeType, SomeViewHolder> ...
該類恰好足夠短後,以防萬一它是relelvant:
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中擴展兩個類。換句話說,您希望將兩個類的所有功能都帶入您的課堂。
解決這種情況的正確方法是什麼?任何人都可以提供一個使用我在這裏定義的類的例子嗎?
考慮使用組合而不是繼承。 – bradimus
你能否提供一個使用上面我寫的類定義的例子? – user7086932