Java: Cast to Hashmap Exception?

1 Antwort

Die ArrayAdapter Klasse, von der du erbst und die getItem Methode nutzt, dürfte nicht schuldig sein. Wenn man sich den Source Code der Klasse anschaut, wird dort nur get(position) auf der intern gespeicherten Liste von rooms aufgerufen.

Alternativ könntest du auch direkt rooms.get(position) aufrufen. Das wird den gleichen Effekt haben.

Vermutlich könnte ArrayList.get(i) der Auslöser sein. Im Source Code findet man "return (E) elementData[index];". Das ist Cast, sollte in der Theorie problemlos sein, da alles entsprechende Paramter haben sollte.

Intern in ArrayList wird alles im Object[] gespeichert, welches auch eine HashMap speichern könnte und dementsprechend bei einer ArrayList<Room> eine ClassCastException auslösen könnte.

Wie die HashMap dort reinkommt, kann ich dir nicht sagen. Im Source Code von Collection, ArrayList oder ArrayAdapter nichts mit (Hash)Map finden. Da du deine Raum Klasse nicht teilst, könnte dort der Ursprung von HashMap sein.

Am besten startest du eine Debugging Session. Schaue dir die Werte vom rooms ArrayList bzw. dem internen Array mObjects an. Findest du dort eine HashMap?

Ansonsten solltest du im relevanten Bereich die Step Into Funktion vom Debugger nutzen oder den Kontext außerhalb im Bereich ArrayAdapter durchstöbern.