Android SDK - Какой ListItem вызвал фактическое контекстное меню? - PullRequest
2 голосов
/ 03 января 2012

Прежде всего, привет, извините за мой плохой английский, я бразилец!Я изучал здесь, в StackOverflow, вопросы других пользователей с тех пор, как начал работать в Android;но теперь моя очередь спросить ...

Я сделал приложение из звуковой карты из учебника, но я решил реализовать новую функцию: Установить в качестве мелодии звонка / уведомления.Я почти уверен, что у меня не возникнет проблем с установкой ogg-файла в качестве мелодии звонка, потому что я только что увидел ответ об этом здесь ... У меня вопрос, как получить идентификатор элемента списка, который вызвал контекстное меню?

Взгляните на мой код (в португальском 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();  
    } 

Итак, как вы можете видеть, я сделал тост, чтобы проверить параметры.Теперь я могу получить res / raw / example.ogg по номеру «0», но я хочу динамически получить идентификатор ListView, чтобы я мог передать его как целое число «position» ...

Пример:

@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 ]

1 голос
/ 03 января 2012

Вместо этого, если вы хотите реализовать твиттер как значок быстрого действия (да, он был доступен в старом твиттере, проверьте изображение ниже), я бы предложил вам внедрить панель быстрого действия .

Подробнее о Шаблон дизайна Quick Action .

enter image description here

1 голос
/ 03 января 2012

Если вы используете обычный список AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

info.id даст вам позицию.

Так что вы можете позвонить notificacao(info.id,item.getItemId())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...