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

jos*_*usa 3 android listview adapter classcastexception

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

holder = (FeedViewHolder) convertView.getTag();
Run Code Online (Sandbox Code Playgroud)

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

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

jos*_*usa 8

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