繁体   English   中英

java.lang.ClassCastException:无法将java.lang.String强制转换为org.myapp.ui.MyClass

[英]java.lang.ClassCastException: java.lang.String cannot be cast to org.myapp.ui.MyClass

我是android开发的新手,遇到了无法解决的问题。 我使用自定义Adapter实现了ExpandableListView 我有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的某些组ExpandableListView了几次之后。 所以有几次它起作用,然后突然不起作用,我得到了这个异常。

java.lang.ClassCastException:无法将java.lang.String强制转换为org.myapp.ui.MyClass

在此代码行中

MyClass selected =(MyClass)lv.getAdapter()。getItem(groupPosition);

如果有人知道为什么会发生这种情况(但仅在ExpandableListView扩展了几个组之后),请告诉我。

取自oracle文档,ClassCastException被抛出以指示代码已尝试将对象强制转换为不是实例的子类。 例如,以下代码生成ClassCastException:

 Object x = new Integer(0);
 System.out.println((String)x);

在您的情况下,您尝试将字符串转换为永远不会通过的自定义类,因为lv.getAdapter().getItem(groupPosition)给出的是String而不是MyClass Object。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM