3

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

holder = (FeedViewHolder) convertView.getTag();

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

我搜索 StackOverflow 和 Google,但所有示例似乎都有效,因为它们对不同的项目使用相同或相当相等的 ViewHolders。但是我的对象确实彼此不同,需要不同的 ViewHolders。谁能帮我解决这个问题?

4

2 回答 2

8

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

于 2013-05-14T08:57:21.367 回答
1

为 ListView 定义项目视图类型并根据实际视图类型转换 ViewHolder,如此答案中的代码所示:为具有不同项目布局的 ListViews 创建 ViewHolders

于 2013-05-13T16:05:26.773 回答