Android ArrayAdapter конструктор не принимает общие объекты? - PullRequest
1 голос
/ 27 октября 2011

У меня проблемы с выпадающим меню автозаполнения Android. Я пытаюсь передать пользовательский объект в новый ArrayAdapter, который затем используется для данных в раскрывающемся меню. Однако я получаю следующую ошибку для этой строки кода:

adapter = new ArrayAdapter<String>(_context, R.layout.list_item, list_items);

The constructor ArrayAdapter<String>(Context, int, DropdownItemData[]) is undefined

Я также попытался запустить это, что выдает ошибку несоответствия типов:

adapter = new ArrayAdapter<DropdownItemData>(_context, R.layout.list_item, list_items);

Type mismatch: cannot convert from ArrayAdapter<DropdownItemData> to ArrayAdapter<String>

Однако следующее прекрасно работает :

String[] test_list = new String[] {"some", "test", "data"};
adapter = new ArrayAdapter<String>(_context, R.layout.list_item, test_list);

Мой класс DropdownItemData переопределяет метод Object toString (), как рекомендуется в документации ArrayList здесь:

http://developer.android.com/reference/android/widget/ArrayAdapter.html

Кто-нибудь знает, в чем проблема / что мне не хватает? Согласно документам, конструктор, который я пытаюсь использовать для ArrayList, должен просто брать общий список - поэтому я не понимаю, на что жалуется ошибка.

1 Ответ

8 голосов
/ 27 октября 2011

Имя класса ArrayAdapter<T>.И подпись конструктора ArrayAdapter(Context context, int textViewResourceId, T[] objects).

Таким образом, если вы объявите свою переменную как ArrayAdapter<String>, вы должны передать массив String в качестве последнего аргумента конструктора.

Чтобы передать ему массив DropdownItemData, ваш адаптер должен иметь тип ArrayAdapter<DropdownItemData>.

Вы можете поместить льва в Cage<Lion>, а птицу вCage<Bird>.Но вы не можете использовать Cage<Lion> с птицами или Cage<Bird> со львами.

Вам следует прочитать учебное пособие по обобщению .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...