Eu tenho um ListView
onde cada elemento da lista contém um TextView e dois botões diferentes. Algo assim:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Com este código, posso criar um OnItemClickListener
para o item inteiro:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
No entanto, não quero que o item inteiro seja clicável, mas apenas os dois botões de cada elemento da lista.
Portanto, minha pergunta é: como implementar um onClickListener para esses dois botões com os seguintes parâmetros:
int button
(em qual botão do elemento foi clicado)int position
(que é o elemento na lista em que o clique do botão aconteceu)
Atualização: Encontrei uma solução conforme descrito na minha resposta abaixo. Agora posso clicar / tocar no botão na tela de toque. No entanto, não consigo selecioná-lo manualmente com o trackball. Ele sempre seleciona o item inteiro da lista e, a partir daí, vai diretamente para o próximo item da lista, ignorando os botões, mesmo que eu tenha definido .setFocusable(true)
e setClickable(true)
pressionado os botões getView()
.
Também adicionei esse código ao meu adaptador de lista personalizado:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Isso faz com que nenhum item da lista seja mais selecionável. Mas isso não ajudou em tornar os botões aninhados selecionáveis.
Alguém tem uma ideia?