0

编辑:请忽略这个问题 - 我已经设法以一种适合我需要的方式解决它(请参阅下面我自己的答案)。

我有一个扩展 Spinner 的 WeatherSpinner 类。该类显示了我最初使用 anArrayAdapter<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());
    ...

}

我将一个RegionList对象作为“列表”参数传递给 updateContents() 和RegionList extends ArrayList<Region>, 和Region extends Locale。我还重写了 Region 的toString()方法以返回一个有效的字符串。

我在这里没有看到什么?我对ArrayList<?>.toArray()工作方式有误吗?

4

1 回答 1

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);
于 2010-12-29T05:13:15.367 回答