2012-01-03 11 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

相關問題