自定义 ListView:分隔符条目忽略设置

发布于 2024-12-01 16:42:39 字数 477 浏览 0 评论 0原文

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

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

return convertView;

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

I've created a custom ListView with separators (using this tutorial). It looks and works fine but the separators are still clickable, focusable and able to get a context menu called from. So i've tryied to "shut them up":

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

return convertView;

But they totally ignore these settings! For testing purposes i used covertView.setBackground(Color.MAGENTA) and it works well. Anyone got an idea what could be wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

卸妝后依然美 2024-12-08 16:42:39

假设您的适配器是实现 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 或其他类型的跟踪集合。

Assuming your adapter is one that implements BaseAdapter (such as an ArrayAdapter), override the isEnabled() method in the adapter.

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

To keep track of which items are separators and which are not, keep an ArrayList or some other type of collection that keeps track.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文