这是我的代码:
int[] myCards = takeMyCardsFromDB(); // returns an int[]
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, R.layout.row_my_roster_card, myCards);
我对ArrayAdapter没有太多经验。我看到这些是ArrayAdapter的公共构造函数:
ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, List<T> objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
我的构造函数有什么问题?
答案 0 :(得分:1)
这是因为int[]
不 Integer[]
。
自动装箱仅适用于单一类型,而不适用于数组:int
可以自动装箱到Integer
,但int[]
无法自动装箱到Integer[]
。
您需要将myCards
转换为Integer[]
。以下方法可以完成这项工作:
public static Integer[] autoboxArray(int[] array) {
Integer[] newArray = new Integer[array.length];
for (int i = 0; i < array.length; i++) {
newArray[i] = array[i];
}
return newArray;
}