2013-05-13 63 views
3

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

holder = (FeedViewHolder) convertView.getTag(); 

我的适配器试图通过从convertView获取标签,如果它不是空来获得ViewHolder。但是这个ViewHolder似乎是前一个项目的ViewHolder,所以它不能被铸造。

我搜索StackOverflow和Google,但所有的例子似乎工作,因为他们使用相同或相当的ViewHolders为他们不同的项目。但我的对象真的不同,需要不同的ViewHolders。任何人都可以帮我解决这个问题吗?

+0

检查 http://stackoverflow.com/questions/17649719/custom-adapter-viewholder-issue/25284549#25284549 – 2014-08-13 11:42:41

回答

8

OK了collegue只是帮助我: 我没有实现的方法getViewTypeCount 。就是这样。 Android系统不知道有不同的视图类型,因为我没有定义它们。无论如何感谢dmaxi!

1

定义为ListView项目视图类型和投根据实际视图类型的ViewHolder为代码显示了这样的回答:Creating ViewHolders for ListViews with different item layouts

+0

难道它正是这样我的文章,它的崩溃。正如我已经说过的那样,它正在崩溃,因为适配器试图将类型A的ViewHolder投射到类型B的ViewHolder,这根本不可能,因为它们彼此不同。我没有看到以前对这个主题的回答所采用的方法是如何处理这个问题的。 – joshplusa 2013-05-14 08:13:07

相关问题