Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
亚类&;超类使用(Android)_Android_Arraylist_Subclass_Extend_Superclass - Fatal编程技术网

亚类&;超类使用(Android)

亚类&;超类使用(Android),android,arraylist,subclass,extend,superclass,Android,Arraylist,Subclass,Extend,Superclass,背景:我有一个相当受欢迎的利基应用程序,我想通过创建一个通用代码的主库来扩展它,我可以使用它以最少的工作量生成更多类似的应用程序 超类(在库中): 基本主题 子类(单独的应用程序): Theme(扩展BaseTheme,为每个应用程序提供一些特定的方法)。 比较器 在Comparator类中,我有一个Arraylist。我想将Comparator移到库中,但这样做时,Arraylist会抛出一个错误,因为库中不存在主题 我尝试将Arraylist更改为Arraylist,认为Theme是Base

背景:我有一个相当受欢迎的利基应用程序,我想通过创建一个通用代码的主库来扩展它,我可以使用它以最少的工作量生成更多类似的应用程序

超类(在库中): 基本主题

子类(单独的应用程序): Theme(扩展BaseTheme,为每个应用程序提供一些特定的方法)。 比较器

在Comparator类中,我有一个Arraylist。我想将Comparator移到库中,但这样做时,Arraylist会抛出一个错误,因为库中不存在主题

我尝试将Arraylist更改为Arraylist,认为Theme是BaseTheme的扩展,是允许的,但当我尝试在Arraylist中创建主题时,这不起作用

在应用程序代码中:

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);
}

显示更多的代码。因为我从您的问题中得到的只是您在继承方面有一些问题。但这是什么问题?具体来说,比较器会很好。添加了相关的代码部分