亚类&;超类使用(Android)
背景:我有一个相当受欢迎的利基应用程序,我想通过创建一个通用代码的主库来扩展它,我可以使用它以最少的工作量生成更多类似的应用程序 超类(在库中): 基本主题 子类(单独的应用程序): Theme(扩展BaseTheme,为每个应用程序提供一些特定的方法)。 比较器 在Comparator类中,我有一个Arraylist。我想将Comparator移到库中,但这样做时,Arraylist会抛出一个错误,因为库中不存在主题 我尝试将Arraylist更改为Arraylist,认为Theme是BaseTheme的扩展,是允许的,但当我尝试在Arraylist中创建主题时,这不起作用 在应用程序代码中:亚类&;超类使用(Android),android,arraylist,subclass,extend,superclass,Android,Arraylist,Subclass,Extend,Superclass,背景:我有一个相当受欢迎的利基应用程序,我想通过创建一个通用代码的主库来扩展它,我可以使用它以最少的工作量生成更多类似的应用程序 超类(在库中): 基本主题 子类(单独的应用程序): Theme(扩展BaseTheme,为每个应用程序提供一些特定的方法)。 比较器 在Comparator类中,我有一个Arraylist。我想将Comparator移到库中,但这样做时,Arraylist会抛出一个错误,因为库中不存在主题 我尝试将Arraylist更改为Arraylist,认为Theme是Base
private ArrayList<Theme> mThemes;
private MyComparator mComparator;
mThemes = mComparator.compare(mSortType, mSortAorD, true, mThemes);
私有数组列表;
私人MyComparator McComparator;
mThemes=mComparator.compare(mSortType,mSortAorD,true,mThemes);
错误:MyComparator类型中的方法compare(int,int,Boolean,ArrayList)不适用于参数(int,int,Boolean,ArrayList)
-我相信这是因为comparator的构造函数具有ArrayList,因为库代码中不存在主题
有什么方法可以做到这一点,或者我需要保持目前的状态(应用程序代码中的比较器)
库代码:
公共类MyCompariator{
private static Context mCtx;
public MyComparator(Context ctx) {
mCtx = ctx;
}
public ArrayList<BaseTheme> compare(final int type, final int sort, Boolean flurry, ArrayList<BaseTheme> list) {
Comparator<BaseTheme> myComparator = getComparator(Sort.SORT_ALPHABETICAL, Sort.DESC, flurry);
Collections.sort(list, myComparator);
myComparator = getComparator(type, sort, flurry);
Collections.sort(list, myComparator);
return list;
}
public abstract class BaseTheme {
public String mName;
public String mCreator;
public String mDate;
public String mAddress;
public int mThemeID;
public int mPopularity;
public boolean mIsFavorite;
public boolean mIsVisible;
public Context mCtx;
public BaseTheme(int themeID, String name, String creator, String date, String address, Boolean favorite,
Boolean visible, int popularity, boolean isFavorite, boolean isVisible, Context ctx) {
setThemeID(themeID);
setName(name);
setCreator(creator);
setDate(date);
setAddress(address);
setPopularity(popularity);
mIsFavorite = isFavorite;
mIsVisible = isVisible;
mCtx = ctx;
}
私有静态上下文mCtx;
公共MyComparator(上下文ctx){
mCtx=ctx;
}
公共ArrayList比较(最终整数类型、最终整数排序、布尔flurry、ArrayList列表){
Comparator myComparator=getComparator(Sort.Sort\u字母顺序,Sort.DESC,flurry);
Collections.sort(列表,myComparator);
myComparator=getComparator(类型、排序、flurry);
Collections.sort(列表,myComparator);
退货清单;
}
公共抽象类基主题{
公共字符串mName;
公共字符串生成器;
公共字符串mDate;
公共场所;
公共交通系统;
公众不受欢迎;
公开的反礼节;
公共布尔不可见;
公共上下文mCtx;
PublicBaseTheme(int-themeID、字符串名称、字符串创建者、字符串日期、字符串地址、布尔收藏夹、,
布尔可见、int流行、布尔isFavorite、布尔isVisible、上下文ctx){
sethemeid(themeID);
集合名(名称);
集合创建者(创建者);
设定日期(日期);
设置地址(地址);
人气;
mIsFavorite=isFavorite;
不可见=不可见;
mCtx=ctx;
}
应用程序代码:
public class FragmentBaseGridActivity extends AbsListViewBaseActivity {
private ArrayList<Theme> mThemes;
private void refreshGrid() {
mThemes = mComparator.compare(mSortType, mSortAorD, true, mThemes);
ImageAdapter ad = (ImageAdapter) listView.getAdapter();
ad.notifyDataSetChanged();
}
public class Theme extends BaseTheme{
public String mStyle;
public Theme(int themeID, String name, String creator, String date, String style, String address, Boolean favorite,
Boolean visible, int popularity, Context ctx) {
super(themeID, name, creator, date, address, favorite, visible, popularity, favorite, visible, ctx);
}
公共类FragmentBaseGridActivity扩展了AblistViewBaseActivity{
私人ArrayList主题;
私有网格(){
mThemes=mComparator.compare(mSortType,mSortAorD,true,mThemes);
ImageAdapter ad=(ImageAdapter)listView.getAdapter();
ad.notifyDataSetChanged();
}
公共类主题扩展了BaseTheme{
公共字符串mStyle;
公共主题(int-themeID、字符串名称、字符串创建者、字符串日期、字符串样式、字符串地址、布尔收藏夹、,
布尔值可见,整数流行,上下文(ctx){
超级(主题标识、姓名、创建者、日期、地址、收藏、可见、流行、收藏、可见、ctx);
}
显示更多的代码。因为我从您的问题中得到的只是您在继承方面有一些问题。但这是什么问题?具体来说,比较器会很好。添加了相关的代码部分