0

編集:この質問は無視してください - 私は必要なものに対してうまく機能する方法でそれを解決することができました (以下の私自身の回答を参照してください)。

Spinner を拡張する WeatherSpinner クラスがあります。このクラスは、私が元々使用していた地域名を示していますArrayAdapter<String>が、今は使用したいと思っていますArrayAdapter<Locale>(Locale は、私自身の抽象的な「空の」クラスです)。

ArrayAdapterClassCastExceptionに次のものを入力しようとすると、エラーが発生します...

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() に渡します and RegionList extends ArrayList<Region>、 and Region extends Locale. toString()また、有効な文字列を返すようにRegion のメソッドをオーバーライドしました。

ここには何が表示されていませんか? 私は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 に答える