0

我有一个扩展 BaseExpandableListAdapter 的类。

公共类 ExpandableListAdapter 扩展 BaseExpandableListAdapter

在列表视图中,我的项目被重复使用,我想防止这种情况发生。

我了解到使用 IGNORE_ITEM_VIEW_TYPE 会阻止操作系统重用它们,但我必须在 getItemViewType 方法中使用它。

当我添加此代码时:

@Override
  public int getItemViewType(int position) {
    return 0;
  }

我有以下错误:

方法不会覆盖其超类中的方法。

如何使用该设置来防止我的 ExpandableList 重复使用项目?

4

1 回答 1

1

方法不会覆盖其超类中的方法。

发生这种情况是因为 a与 aBaseExpandableListAdapter不共享相同的接口,BaseAdapter因此无法覆盖该方法。BaseExpandableListAdapter确实为视图类型公开了类似的机制,但它分为组视图类型和子视图类型,因此您需要覆盖以下一个(或全部)方法来修改视图类型处理系统:

getChildType(int groupPosition, int childPosition) - 子行的视图类型

getGroupType(int groupPosition) - 组行的视图类型

为了:

我了解到使用 IGNORE_ITEM_VIEW_TYPE 会阻止操作系统重用它们

不,它没有,它只是告诉适配器重用的视图类型无关紧要。如果您想停止视图重用,那么只需在getChildView()和/或中创建一个新的行视图getGroupView()(因此那里没有if (convertView == null)...代码)。但是,这会对性能产生影响。

于 2013-09-06T10:32:57.933 回答