带有不同Items和ViewHolders的ListView导致ClassCastException

时间:2013-05-13 15:56:54

标签: android listview adapter classcastexception

我有一个ListView,它应该有四种不同类型的项目。我搜索它,找到了不同的解决方案,这是可能的,并试图像其他人一样做我的东西。我创建了不同的ViewHolders(每种类型一个)。当ListView第一次出现时,一切都很好。但是当我开始滚动时,我得到一个classCastException。 原因很明显:

holder = (FeedViewHolder) convertView.getTag();

我的适配器尝试通过从convertView获取标记来获取ViewHolder,如果它不是null。但是这个ViewHolder似乎是上一个项目的ViewHolder,因此无法进行渲染。

我搜索StackOverflow和Google,但所有示例似乎都有效,因为他们使用相同或非常相同的ViewHolders来处理不同的项目。但我的对象确实彼此不同,需要不同的ViewHolders。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:8)

好吧,一位同事刚帮我: 我没有实现getViewTypeCount方法。就是这样。 Android系统不知道有不同的视图类型,因为我没有定义它们。非常感谢dmaxi!

答案 1 :(得分:1)

定义ListView的项目视图类型,并根据实际视图类型强制转换ViewHolder,如下面的代码所示:[{3}}