ExpandableListViewAdapter无法覆盖getItemViewType

时间:2013-09-06 08:42:01

标签: android android-layout expandablelistview

我有一个扩展BaseExpandableListAdapter的类。

  

public class ExpandableListAdapter扩展了BaseExpandableListAdapter

在列表视图中,我的项目被重复使用,我想阻止它。

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

当我添加此代码时:

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

我有以下错误:

  

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

如何使用该设置阻止我的ExpandableList重用项?

1 个答案:

答案 0 :(得分:1)

  

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

这种情况正在发生,因为BaseExpandableListAdapterBaseAdapter不共享相同的接口,因此无法覆盖该方法。 BaseExpandableListAdapter确实为视图类型公开了类似的机制,但它在组视图和子视图类型之间划分,因此您需要覆盖下面的一个(或所有)方法来修改视图类型处理系统:

  

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

     

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

有关:

  

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

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