我有一个扩展BaseExpandableListAdapter的类。
public class ExpandableListAdapter扩展了BaseExpandableListAdapter
在列表视图中,我的项目被重复使用,我想阻止它。
我已经了解到使用IGNORE_ITEM_VIEW_TYPE会阻止操作系统重用它们,但我必须在getItemViewType方法中使用它。
当我添加此代码时:
@Override
public int getItemViewType(int position) {
return 0;
}
我有以下错误:
Method不会覆盖超类中的方法。
如何使用该设置阻止我的ExpandableList重用项?
答案 0 :(得分:1)
Method不会覆盖超类中的方法。
这种情况正在发生,因为BaseExpandableListAdapter
与BaseAdapter
不共享相同的接口,因此无法覆盖该方法。 BaseExpandableListAdapter
确实为视图类型公开了类似的机制,但它在组视图和子视图类型之间划分,因此您需要覆盖下面的一个(或所有)方法来修改视图类型处理系统:
getChildType(int groupPosition, int childPosition) - 子行的视图类型
getGroupType(int groupPosition) - 组行的视图类型
有关:
我了解到使用IGNORE_ITEM_VIEW_TYPE会阻止操作系统 重用它们
不,它没有,它只是告诉适配器重用的视图类型无关紧要。如果您想停止重复使用视图,只需在getChildView()
和/或getGroupView()
中创建一个新的行视图(那里没有if (convertView == null)...
代码)。然而,这会对性能产生影响。