Android SDK - 哪个ListItem调用了实际的上下文菜单?

时间:2012-01-03 04:13:54

标签: android listitem

首先是大家好,对不起我的英语不好,我是Brazillian!自从我开始使用Android以来,我一直在StackOverflow中学习其他用户的问题。但现在轮到我问了......

我从教程中制作了一个音板应用程序,但我决定实现一项新功能:设置为铃声/通知。我很确定将ogg文件设置为铃声我没有问题因为我刚刚在这里看到了答案...我的问题是如何获取调用上下文菜单的listitem的ID?

看看我的代码(葡萄牙语toque /notificação意味着铃声/通知):

registerForContextMenu(findViewById(android.R.id.list));
...
    @Override
    public void onCreateContextMenu(ContextMenu menuc, View v,ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menuc, v, menuInfo);
        menuc.setHeaderTitle("Usar como");
        menuc.add(Menu.NONE, 0, Menu.NONE, "Toque");
        menuc.add(Menu.NONE, 1, Menu.NONE,"Notificação");
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getTitle() == "Toque") { toque(0,item.getItemId()); }  
        else if(item.getTitle() == "Notificação") { notificacao(0,item.getItemId()); }  
        else { return false; }
        return true;  
    }

    public void toque(int position,int id){  
        Sound s = (Sound) mSounds.get(position);
        Toast.makeText(this, s.getSoundResourceId(), Toast.LENGTH_SHORT).show();  
    }

    public void notificacao(int position,int id){  
        Sound s = (Sound) mSounds.get(position);
        Toast.makeText(this, s.getSoundResourceId(), Toast.LENGTH_SHORT).show();  
    } 

所以,你可以看到我做了一个toast来测试参数。现在我可以通过数字“0”得到res / raw / example.ogg但是我想动态获取ListView的ID,所以我可以将它作为整数“位置”传递...

示例:

@Override
public boolean onContextItemSelected(MenuItem item) {
    if (item.getTitle() == "Toque") { toque(GET.LISTITEM.ID, item.getItemId()); }
    else if (item.getTitle() == "Notificação"){ notificacao(GET.LISTITEM.ID, item.getItemId()); }
    else { return false; }
    return true;
}  

我不知道我是否足够清楚,或者是否可能,但我相信如果我找到办法,我会很高兴。

提前致谢,卢卡斯。

2 个答案:

答案 0 :(得分:1)

假设您使用的是普通列表框 AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

info.id会让你获得这个职位。

所以你可以打电话 notificacao(info.id,item.getItemId())

答案 1 :(得分:1)

相反,如果你想实现像快速行动徽章这样的推特(是的,它可以在旧推特中找到,请查看下面的图片),我建议你实施Quick Action bar

有关Quick Action design pattern的更多信息。

enter image description here