0

我创建了一个带有分隔符的自定义 ListView(使用教程)。它看起来和工作正常,但分隔符仍然是可点击的、可聚焦的,并且能够获取从中调用的上下文菜单。所以我试着“让他们闭嘴”:

...
case TYPE_SEPARATOR:
    convertView.setFocusable(false);
    convertView.setClickable(false);
    convertView.setLongClickable(false);
    break;
        }

return convertView;

但他们完全忽略了这些设置!出于测试目的,我使用covertView.setBackground(Color.MAGENTA)它并且效果很好。有人知道可能出了什么问题吗?

4

1 回答 1

0

假设您的适配器是实现 BaseAdapter(例如 ArrayAdapter)的适配器,请覆盖适配器中的isEnabled()方法。

@Override
public boolean isEnabled(int position) {
    if (getItemViewType(postion) == TYPE_SEPARATOR) {  // method taken from example
        return false;
    }
    return super.isEnabled(position);
}

要跟踪哪些项目是分隔符,哪些不是,请保留一个 ArrayList 或一些其他类型的用于跟踪的集合。

于 2011-08-26T19:30:20.810 回答