无法解析构造函数 ArrayAdapter(Context, int, int[])
Cannot resolve constructor ArrayAdapter(Context, int, int[])
这是我的代码:
int[] myCards = takeMyCardsFromDB(); // returns an int[]
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, R.layout.row_my_roster_card, myCards);
我对 ArrayAdapter 的经验不多。我看到这些是 ArrayAdapter 的 public 构造函数:
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)
我的构造函数有什么问题?
那是因为 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;
}
这是我的代码:
int[] myCards = takeMyCardsFromDB(); // returns an int[]
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this, R.layout.row_my_roster_card, myCards);
我对 ArrayAdapter 的经验不多。我看到这些是 ArrayAdapter 的 public 构造函数:
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)
我的构造函数有什么问题?
那是因为 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;
}