2012-01-03 69 views
2

首先你好人,对不起我的英文不好,我是巴西人!自从我开始使用Android以来,我一直在使用StackOverflow学习其他用户的问题;但现在轮到我问...Android SDK - 哪个ListItem调用了实际的上下文菜单?

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

看看我的代码(在葡萄牙扭矩/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(); 
    } 

所以,你可以看到我做了一个敬酒测试参数。现在我可以通过数字“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; 
} 

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

在此先感谢卢卡斯。

回答

1

假设你使用的是正常的列表框 AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

info.id会得到你的位置。

所以,你可以调用 notificacao(info.id,item.getItemId())

+0

非常感谢!它像一个魅力,但日食纠正我:调用(int)info.id,item.getItemId() – 2012-01-03 12:21:44

+0

现在我有麻烦设置为铃声LOL。正是因为我有“res/raw/example.ogg”文本,所以我很容易。我试图调整我在这里找到的代码,但没有成功......你能帮我吗? – 2012-01-03 23:38:50

+0

我认为不可能将您的应用的私人资源设置为铃声。您需要驻留在文件系统上的声音。 – nandeesh 2012-01-04 06:19:23

1

相反,如果你想实现的Twitter一样快速行动徽章(是的,它是在旧的Twitter提供,请查看下图),我会建议你实现Quick Action bar

更多关于Quick Action design pattern

enter image description here

+0

谢谢,但我开始,所以这是一个更复杂= \ – 2012-01-03 12:22:49

+1

@ user1127100已经有一个准备好的东西可供下载。 – 2012-01-03 12:32:04

相关问题