Domanda

Io sto usando un ListView che è configurato in questo modo:

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

Nel mio codice aggiungo un OnItemSelectedListener alla ListView in questo modo:

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

La mia attività implementa l'ascoltatore così:

@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);
}

La mia speranza era, che avrei visto questa uscita di debug il momento clicco su qualcosa nella lista. Ma l'output di debug non viene mai mostrato in LogCat.

È stato utile?

Soluzione

Il OnItemSelectedListener ascolta per la selezione di voci di elenco e non la lista click voce.

Una lista in questo caso potrebbe essere visto come spostare il fuoco su questo articolo con trackpad del dispositivo.

Per ottenere il voluto uno comportamento deve utilizzare il OnItemClickListener .

Altri suggerimenti

E 'perché vi capita di essere il test con le dita su un dispositivo touch-enabled. In modalità touch , non v'è alcuna messa a fuoco e nessuna selezione. Interfacce utente che la selezione necessità deve utilizzare un diverso tipo di widget di, come ad esempio pulsanti di opzione.

In un primo momento, è necessario impostare ChoiceMode, e poi, in ListView, ci sarà non accettano l'evento selezionato perché setOnItemSelectedListener registed in AdapterView, e richiamata nel metodo handleDataChanged(), ma di classe AbsListView ignorare questo metodo e mai richiamata OnItemSelectedListener

entrare descrizione dell'immagine qui

è possibile ottenere il seletedItem con questo metodo in 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());

        }
    });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top