需要有关自定义Spinner / ArrayAdapter设置的帮助

时间:2010-12-29 02:50:41

标签: android android-arrayadapter

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

我有一个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()的工作方式有误吗?

1 个答案:

答案 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);