РЕДАКТИРОВАТЬ: Пожалуйста, проигнорируйте этот вопрос - мне удалось решить его таким образом, который прекрасно работает для того, что мне нужно (см. Мой собственный ответ ниже).
У меня есть класс WeatherSpinner, который расширяет Spinner. Класс показывает имена регионов, которые я изначально использовал, используя ArrayAdapter<String>
, но теперь я хочу использовать ArrayAdapter<Locale>
(Locale - мой собственный абстрактный «пустой» класс).
Я получаю ClassCastException
при попытке заполнить мой ArrayAdapter следующим ...
protected ArrayList<?> theList;
protected ArrayAdapter<Locale> aa = null;
...
protected void updateContents(ArrayList<?> list, int selectedItem) {
theList = list;
// Exception thrown on next line
aa = new ArrayAdapter<Locale>(theContext, android.R.layout.simple_spinner_item,
(Locale[]) theList.toArray());
...
*
} * 1013
Я передаю объект RegionList
в updateContents () в качестве параметра list и RegionList extends ArrayList<Region>
и Region extends Locale
. Я также переопределил метод toString()
в Region, чтобы вернуть действительную строку.
Что я здесь не вижу? Я не прав насчет того, как ArrayList<?>.toArray()
работает?