编辑:请忽略这个问题 - 我已经设法以一种适合我需要的方式解决它(请参阅下面我自己的答案)。
我有一个WeatherSpinner类,它扩展了Spinner。该类显示了我最初使用ArrayAdapter<String>
执行的区域名称,但我现在想要使用ArrayAdapter<Locale>
(Locale是我自己的抽象'空'类)。
我尝试使用以下内容填充ArrayAdapter时得到ClassCastException
...
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());
...
}
我将RegionList
对象作为'list'参数传递给updateContents(),RegionList extends ArrayList<Region>
和Region extends Locale
。我还覆盖了Region的toString()
方法以返回有效的String。
我在这里看不到什么?我对ArrayList<?>.toArray()
的工作方式有误吗?
答案 0 :(得分:0)
好的,解决了。
我需要使用ArrayList的toArray(T [] contents)方法,如下所示......
Locale[] locArray = new Locale[theList.size()];
locArray = (Locale[]) theList.toArray(locArray);
aa = new ArrayAdapter<Locale>(theContext, android.R.layout.simple_spinner_item,
locArray);