2012-07-23 14 views
28

Ho implementato l'android listview con lo ListActivity. Qui ho il problema che quando clicco sulla voce dell'elenco non viene eseguita alcuna azione quando anche il colore del flash non arriva che è il colore arancione. Quindi hai qualche idea su questa risposta gentile alla mia domanda.Click non funziona su Listitem Listview android

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    super.onListItemClick(l, v, position, id); 
    Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT) 
      .show(); 

} 

Ho inserito questo codice anche nell'elenco principaleAttività.

+2

Puoi pubblicare il codice, plz – Nermeen

+0

e la lista il codice adattatore – rajpara

+1

Avete qualche pulsante o ImageButton nella tua lista? –

risposta

107

La prima cosa che quello che hai da notare qui è, quando ci sono elementi cliccabili come pulsanti o ImageButtons presenti nel vostro elemento ListView, prendono il controllo di click eventi. E così il tuo ListView non avrà la possibilità di accettare l'evento click.

Quello che devi fare è semplicemente impostare l'attributo focusable su false per lo Button o ImageButton che hai nel tuo ListView. Funzioneranno comunque senza problemi e funzionerà anche il tuo ListView onListItemClick.

Prova questo,

 <Button android:id="@+id/textsize_increaser" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/back_button" 
     android:focusable="false" 
     android:text=" A + "/> 

Qui ho aggiunto questo android:focusable="false" e funziona benissimo. Provalo.

+2

Dovresti aggiungere anche "clickable = false' se ascolti l'elemento click only – mente

+0

Please help me. Sono stato bloccato su questo per le ultime 7 ore ora, ed è una domanda così semplice. http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 –

+1

Per me, 'imageButton.setFocusable (false)' e 'imageButton.setFocusableInTouchMode (false)' ** nell'adattatore ** aiutato. In XML non ci sono stati effetti! – user2878850

9

Avete impostare la modalità di scelta di ListView per SINGLE:

 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

E se avete qualsiasi imageview cliccabile o TextView o pulsante nella voce di elenco, poi fare loro non attivabile (nella classe Adapter):

 yourButton.setFocusable(false); 
     yourButton.setFocusableInTouchMode(false); 
+0

Per favore aiutatemi. Sono stato bloccato su questo per le ultime 7 ore ora, ed è una domanda così semplice. http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 –

4

Si sta utilizzando l'adattatore personalizzato? e gonfiando il layout con il pulsante o qualsiasi vista che mangia la vista dell'elenco di visualizzazione come focus, quindi non funzionerà ovviamente. assicurati di impostare

android:focusable="false" 

a tale visualizzazione nel file xml. spero che questo funzioni per te

+0

Please help me. Sono stato bloccato su questo per le ultime 7 ore ora, ed è una domanda così semplice. http://stackoverflow.com/questions/35108940/why-cant-i-remove-an-item/35109304#35109304 –

4

Impostare questo nel file java ListActivity

listview1.setFocusable(false); 
1

Eclipse mi ha suggerito di aggiungere alle mie TextViews nel layout xml utilizzato per la visualizzazione elenco.

Bene, se si desidera fare clic sugli elementi nell'elenco, non è necessario aggiungere tali tag.

0

si riferiscono a questo post per una soluzione:

Click is not working on the Listitem Listview android

View v = parent.getChildAt(position); 
parent.requestChildFocus(v,view); 
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row")); 

int count = parent.getChildCount(); 
for(int i=0; i<count; i++) 
{ 
    if(i!=position) 
    { 
    v = parent.getChildAt(i); 
    v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row)); 
    } 
} 
0
listview.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v, int pos, 
        long id) { 
       Toast.makeText(v.getContext(), exm.get(pos).getDefinition(), 
         Toast.LENGTH_SHORT).show(); 


      } 
     }); 
0

In realtà non è un parametro significato per che per evitare di vista i bambini di ottenere attenzione, basta aggiungere il seguente nel genitore layout:

android:descendantFocusability="blocksDescendants" 

Come spiega la documentazione:

ViewGroup bloccherà i suoi discendenti dalla ricezione dello stato attivo.

0

assicurarsi che siete

  1. Non usando Scroll View con la lista Visualizza
  2. Non usando Scroll View nel layout oggetto riga per elenco Visualizza

Se Scroll View è presente rimuoverlo in uno dei punti sopraindicati

0

listItemButton.setFocusable (false); listItemButton.setFocusableInTouchMode (false);

Impostare quanto sopra nell'adattatore . La sua non è lavorare in xml