Pergunta

Estou usando uma ListView que é configurada como esta:

<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:longClickable="false"
    android:choiceMode="singleChoice">
</ListView>

No meu código, adiciono um OnItemSelectedListener ao ListView como este:

getListView().setAdapter(adapter);
getListView().setOnItemSelectedListener(this);

Minha atividade implementa o ouvinte assim:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Tag", "ListItemSelected: Parent: " + parent.toString() + " View: "
            + view.toString() + " Position: " + " Id: " + id);
}

Minha esperança era ver essa saída de depuração no momento em que clico em algo na lista. Mas a saída de depuração nunca é mostrada no logcat.

Foi útil?

Solução

o OnItemSelectedListener Escute as seleções de itens da lista e não listam cliques de item.

Uma seleção neste caso pode ser vista como movendo o foco neste item com o trackpad do dispositivo.

Para obter o comportamento desejado, é preciso usar o OnItemClickListener.

Outras dicas

É porque você está testando com os dedos em um dispositivo habilitado para toque. Dentro Modo de toque, não há foco nem seleção. As UIs que precisam de seleção devem usar um tipo diferente de widget, como botões de rádio.

No começo, você deve definir ChoiceMode,e depois,No ListView, não aceitará o evento selecionado porque setOnItemSelectedListener Registrado em AdapterViewe retorno de chamada no método handleDataChanged(), mas aula AbsListView substituir este método e nunca retorno de chamada OnItemSelectedListener

enter image description here

Você pode obter o seletedItem por este método em setOnItemClickListener

     mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.e("TAG", "onItemClick: " + position);
            SparseBooleanArray positions = mListView.getCheckedItemPositions();
            Log.e("TAG", "onItemSelected: " + positions.toString());

        }
    });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top