gpt4 book ai didi

Android:当 ListView 包含标题时,上下文菜单回调位置偏移一个

转载 作者:行者123 更新时间:2023-11-29 22:25:53 26 4
gpt4 key购买 nike

我有一个带标题的 ListView,使用 ListView.addHeader(...) 设置除了尝试创建上下文菜单外,它似乎工作正常。

当用户长按一行时,onCreateContextMenu 回调中的位置似乎偏移了一位。当用户长按标题时,报告的位置是 0(我不希望回调),当用户长按第一行时,报告的位置是 1 而不是 0 等等。

相同的代码在没有 header 的情况下按预期工作。

我知道当我设置标题时,Android 内部只是在我的周围创建了一个新的适配器,但我假设他们会在调用回调之前处理调整位置。

我看到的是预期的行为吗?也许我做错了什么?

这是我获取位置的方法:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = info.position;

// this is my workaround, but I'm afraid it's going to bite me in
// the ass if/when GOOG fixes this
if( this.hasHeader() && position > 0 ) position--;

最佳答案

I know that internally Android just creates a new Adapter around mine when I set a header, but I would assume they handle adjusting the position before invoking callbacks.

我怀疑。我没有尝试过这种特定行为,但我自己编写了包装适配器,这不是一个容易解决的问题。

简单地说,上下文菜单的东西根本不涉及Adapter,只涉及AdapterView。因此,包装 Adapter 没有机会使用菜单事件或调整位置值。

我怀疑您只需要减去 1 并自己忽略标题行。

关于Android:当 ListView 包含标题时,上下文菜单回调位置偏移一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986175/

26 4 0