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

标签 java android expandablelistview classcastexception

我是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 中的某些组几次之后才出现。所以有几次它起作用了,然后突然它不起作用了,我得到了这个异常。

java.lang.ClassCastException: java.lang.String cannot be cast to 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。

关于java.lang.ClassCastException : java. lang.String 无法转换为 org.myapp.ui.MyClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31045589/

相关文章:

android - 非法选项 : keystore keytool -genkeypair [OPTION]. .. 错误

java - 在java中使用1个循环查找二维数组的行总和

java - 插入数据, "MobileServiceTable must have a single id property defined"

Android RegEx 找不到匹配项

android - Gradle :无效符号: 'new'

android - ExpandableListView 回调不同步

java - 如何等待QueueChannel处理所有消息?

java - 单击 Javafx 2.2 选项卡中的保存/取消按钮时如何关闭该选项卡?

android - ExpandableListView 重复子节点

android - expandableList 中的空组不可选择