2015-01-06 2 views
-1

Это мой код:не удается разрешить конструктор 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:

  • 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)

Что не так в моем конструкторе?

ответ

1

Это потому, что int[] является не a Integer[].

Autoboxing работает только с особыми типами, а не с массивами: int может быть autoboxed к Integer, но int[] не может быть autoboxed к 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; 
} 
+0

спасибо. вероятно, поздний час отослал меня из головы – facundo

Смежные вопросы