我是android开发的新手,我遇到了一个我无法解决的问题。
我使用自定义ExpandableListView
实施了Adapter
。我有5个组,每组有1个子项。每个组元素的数据类型为:org.myapp.ui.MyClass
。
我现在正在尝试在扩展它时获取每个组元素的MyClass
对象。为此,我使用setOnGroupExpandListener
:
lv.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
public void onGroupExpand (int groupPosition){
MyClass selected = (MyClass)lv.getAdapter().getItem(groupPosition);
servId = selected.getServiceId();
// Do more stuff here
}
});
当我现在在模拟器中测试此代码时,我得到以下ClassCastException
,但仅在ExpandableListView
几次扩展某些组之后。所以有几次它工作,然后突然它没有,我得到这个例外。
java.lang.ClassCastException:java.lang.String无法强制转换为org.myapp.ui.MyClass
在此代码行中
MyClass selected =(MyClass)lv.getAdapter()。getItem(groupPosition);
如果有人知道为什么会这种情况发生(但只是在ExpandableListView
扩展了几个群组之后),请告诉我。
答案 0 :(得分:1)
取自oracle docs,ClassCastException抛出此异常表示代码已尝试将对象强制转换为不是实例的子类。例如,以下代码生成ClassCastException:
Object x = new Integer(0);
System.out.println((String)x);
在你的情况下,你试图将一个字符串转换为一个永远不会通过的自定义类,因为行lv.getAdapter().getItem(groupPosition)
给出了String而不是MyClass Object。