gpt4 book ai didi

android - 当 gridview 项目使用 registerForContextMenu 时,setonitemclicklistener 不工作

转载 作者:行者123 更新时间:2023-11-29 16:24:20 27 4
gpt4 key购买 nike

这个问题之前有人问过,主要是引用了ListActivity,所以一直没能使用他们的方案。 OTOH,我正在使用包含 gridview 的正常 Activity (由于其上的其他 UI 元素)。当我对某些网格项目使用 registerForContextMenu() 时,不会为这些特定项目调用 onitemclick() 处理程序。

有人可以建议是否有一个简单的解决方案吗?

我已经注册了 onItemClickListener() 使用

assetsListView.setOnItemClickListener(this);

对于网格中的每个(部分)ImageView 元素,我使用

registerForContextMenu(imgView);

onItemClick() 仅针对未注册上下文菜单的那些项目调用。希望这会有所帮助。

谢谢,拉贾特

最佳答案

我为 onClick 和 contextMenu 注册了每个项目,还添加了一个标签,我可以使用它来识别上下文菜单启动的特定小部件。

        registerForContextMenu(imgView);
imgView.setTag(asset.id);
imgView.setOnClickListener(this);

启动上下文菜单时,我从小部件获取标签供以后使用:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
if (!(v instanceof ImageView))
return;

super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, v.getId(), 0, "Launch");
assetIdViaContextMenu = (String) v.getTag();
}

当单击上下文菜单中的菜单项时,我使用 assetIdViaContextMenu 来了解正在引用哪个小部件:

@Override
public boolean onContextItemSelected(MenuItem item)
{
if (assetIdViaContextMenu == null)
return true;

Asset asset = getAsset(assetIdViaContextMenu);

if (item.getTitle() == "Launch")
{
....

另外,我不得不覆盖上下文菜单的取消。

@Override
public void onContextMenuClosed(Menu menu)
{
assetIdViaContextMenu = null;
super.onContextMenuClosed(menu);
}

希望这对以后的人有所帮助。如果您认为我可以对此进行改进,请告诉我。

关于android - 当 gridview 项目使用 registerForContextMenu 时,setonitemclicklistener 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5401462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com