Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre AdapterContextMenuInfo

Olá bom dia! Eu não estou conseguindo entender bem a parte que é necessário fazer um adapter do ContextMenuInfo, sei que ele contém informações que pode nos ajudar a encontrar a posição do aluno que queremos deletar, mas pra mim não ficou muito claro. Pode me ajudar?

Obrigada.

1 resposta
solução!

Olá Janaina,

Quando o Android gera um menu de contexto, o componente que foi clicado monta um objeto do tipo ContextMenuInfo contendo informações relevantes para aquele objeto em particular. Por exemplo, se o objeto clicado para abrir o menu de contexto foi uma ListView, ela própria irá gerar um objeto do tipo AdapterContextMenuInfo contendo a posição do item clicado. Agora se o objeto fosse uma ExpandableListView, ela geraria um objeto correspondente que seria um ExpandableListContextMenuInfo.

Agora vamos nos atentar ao método onCreateContextMenu:

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) {...}

Esse método é invocado sempre que for necessário criar um novo menu de contexto na tela do aplicativo. Isso significa que ele pode vir de qualquer componente que estiver na tela. Por esse motivo, nesse método recebemos apenas um ContextMenuInfo pois não sabemos qual componente disparou a criação do menu de contexto. Poderia ser tanto um AdapterContextMenuInfo ou um ExpandableListContextMenuInfo.

Agora, se sabemos que foi uma ListView que gerou o menu (nosso aplicativo só tem esse componente que gera menu de contexto), vimos que ela cria um AdapterContextMenuInfo e passa para o onCreateContextMenu. Então a situação que temos é que recebemos um ContextMenuInfo como parâmetro mas temos certeza que ele é um AdapterContextMenuInfo. Nesse caso, podemos avisar pro Java que queremos converter essa referência de ContextMenuInfo para AdapterContextMenuInfo. Fazemos isso usando o casting:

AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) info;

Dessa forma, conseguimos acessar os atributos específicos desse objeto e descobrir qual item da lista foi clicado para gerar o menu de contexto.