У меня есть четыре различных класса фрагментов, которые все создают экземпляр моего собственного ArrayAdapter.Все они должны включить ссылку на себя в конструктор ArrayAdapter.
Мои четыре класса фрагментов: "FeaturedFragment", "GeneralInfoFragment", "VisitingFragment" и "LivingHereFragment".
Для того, чтобыпринимать ссылки на каждый из этих различных классов, в настоящее время в моем классе ArrayAdapter есть четыре конструктора:
infoViewAdapter(Context context, ArrayList<MordorInfo> list, FeaturedFragment cb) {
super (context, 0, list);
myContext = context;
infoList = list;
featuredCallback = cb;
}
infoViewAdapter(Context context, ArrayList<MordorInfo> list, GeneralInfoFragment cb) {
super (context, 0, list);
myContext = context;
infoList = list;
generalInfoCallback = cb;
}
infoViewAdapter(Context context, ArrayList<MordorInfo> list, LivingHereFragment cb) {
super (context, 0, list);
myContext = context;
infoList = list;
livingHereCallback = cb;
}
infoViewAdapter(Context context, ArrayList<MordorInfo> list, VisitingFragment cb) {
super (context, 0, list);
myContext = context;
infoList = list;
visitingCallback = cb;
}
Есть ли способ объединить их в один конструктор?Возможно, приняв несколько общий тип в конструкторе для параметра «это»?Или, может быть, все четыре фрагмента расширяют один и тот же класс, чтобы я мог приводить this
при вызове конструктора?
Получив ссылки, я использую их для выполнения открытого метода в соответствующем фрагменте:
if (featuredCallback != null) {
featuredCallback.setButtonCallback(currentInfo.gotoRef);
} else if (generalInfoCallback != null) {
generalInfoCallback.setButtonCallback(currentInfo.gotoRef);
} else if (visitingCallback != null) {
visitingCallback.setButtonCallback(currentInfo.gotoRef);
} else if (livingHereCallback != null) {
livingHereCallback.setButtonCallback(currentInfo.gotoRef);
}
Я бы хотел сделать этот вызов из единственной ссылочной переменной класса.