在我的Android应用程序中,我有ItemCategory POJO和ItemSubcategory POJO,它们都扩展了包含一些共同特征的类别POJO。
我有一个自定义的Load Spinner方法,我将对象的ArrayList传递给它,然后将它们加载到微调器(用于下拉/选择的Android名称)
我尝试将ArrayList传递给单个方法loadCategoriesIntoSpinner(它接受一个ArrayList作为参数),我希望它能够理解Im传递的是一个ArrayList,但它没有。
public static void loadCategoriesIntoSpinner(Context context, ArrayList<ItemCategory> array, Spinner spinner) {
// Creating adapter for spinner
ArrayAdapter<ItemCategory> dataAdapter = new ArrayAdapter<ItemCategory>(context,
R.drawable.simple_spinner_item, array);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(R.drawable.simple_spinner_dropdown_item);
// Attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
public static void loadSubcategoriesIntoSpinner(Context context, ArrayList<ItemSubcategory> array, Spinner spinner) {
// Creating adapter for spinner
ArrayAdapter<ItemSubcategory> dataAdapter = new ArrayAdapter<ItemSubcategory>(context,
R.drawable.simple_spinner_item, array);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(R.drawable.simple_spinner_dropdown_item);
// Attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
以下是Category对象:
主要类别:
abstract public class Category {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name;
}
} // End of Class
继承类ItemCategory
public class ItemCategory extends Category {
private String logo;
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
} // End of Class
继承类ItemSubcategory:
public class ItemSubcategory extends Category {
private int parentID;
public void setParentID(int parentID) {
this.parentID = parentID;
}
public int getParentID() {
return parentID;
}
} // End of Class
答案 0 :(得分:3)
public static void loadSubcategoriesIntoSpinner(Context context, List<? extends Category> array, Spinner spinner)
或
public static void loadSubcategoriesIntoSpinner(Context context, List<Category> array, Spinner spinner)
如果您将列表创建为List<Category>
。
我建议您使用界面List
而不是像ArrayList
这样的特定实现。这样您就可以更改实现(例如LinkedList
),而无需修改代码。
答案 1 :(得分:2)
public static void <T extends Category> loadCategoriesIntoSpinner(Context context, List<T> array, Spinner spinner) {
ArrayAdapter<T> dataAdapter = new ArrayAdapter<T>(context, R.drawable.simple_spinner_item, array);
...