setOnItemClickListener () no funciona en ListView personalizado @ Android

Implementé un ListView personalizado al extender LinearLayout para cada fila. Cada fila tiene una pequeña miniatura, un texto y una check box . La list view se despliega correctamente y puedo desplazarme y lanzarla sin problemas.

Pero The ListView no parece responder al setOnItemClickListener() en absoluto, así que tuve que encontrar una solución al configurar click listener en getView() del Texto dentro de cada fila que obviamente está creando problemas cuando estoy tratando de reutilizar el adapter ¿Alguien tiene una solución?

Prueba esto
Para ListView,

 final ListView list = (ListView) findViewById(R.id.list); list.setItemsCanFocus(false); 

Además, asegúrese de que CheckBox dentro del elemento de la lista establezca focos enfocables

 android:focusable="false" android:focusableInTouchMode="false" 

respuesta anterior: escribí en la publicación anterior aquí

 android:focusable="false" android:clickable="false" 

no ayudará cuando ImageButton esté en la vista personalizada. Uno debe usar button.setFocusable(false); durante el tiempo de ejecución (desde el código fuente de Java)

Editar: hay una solución aún más elegante. Intenta agregar android:descendantFocusability="blocksDescendants" en el diseño de la raíz del elemento list. Esto hará que los clics enListItem sean posibles y, por separado, puede manejar los clics de Button o ImageButton.

Para un ListView donde configura las vistas de elementos en CheckBox

 android:focusable="false" android:clickable="false" 

http://code.google.com/p/android/issues/detail?id=3414

¿Hizo algún ViewHolder en su clase de adaptador extendido? Si es así, cree una instancia de ese marcador de posición en el setOnItemClickListener () algo puede funcionar así.

 @Override protected void onListItemClick(ListView l, View v, int position, long id) { View rowView = v; if (rowView == null) { LayoutInflater inflater = this.getLayoutInflater(); // GET INFLATE OF YOUR LAYOUT. rowView = inflater.inflate(R.layout.projectpeopledescrate, null); // CUSTOM ViewHolder Class Created in Adapter. // name,title,comment are my components on the same listview clicked item. PPDViewHolder viewHolder = new PPDViewHolder(); viewHolder.name = (TextView) rowView.findViewById(R.id.ppeopledescrvname); viewHolder.title = (TextView) rowView.findViewById(R.id.ppeopledescrvtime); viewHolder.comment = (TextView) rowView.findViewById(R.id.ppeoplervcomment); viewHolder.hiddenLayout = (RelativeLayout) rowView.findViewById(R.id.hiddenCommentPanel); rowView.setTag(viewHolder); } // ANOTHER object instance to apply new changes. PPDViewHolder holder = (PPDViewHolder) rowView.getTag(); // I've setted up visibility over the components. You can set your onClickListener over your buttons. holder.comment.setVisibility(View.GONE); holder.name.setVisibility(View.GONE); holder.title.setVisibility(View.GONE); holder.hiddenLayout.setVisibility(View.VISIBLE); holder.hiddenLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.MATCH_PARENT)); holder.hiddenLayout.bringToFront(); } 

Espero que quieras algo igual. ¡Buena suerte!

Tengo este código

 this.mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Log.v(TAG,"loul"); } }); 

Pero no funcionó

Así que he puesto juste onItemSelectedListener debajo y funciona Oo:

 this.mListView.setItemsCanFocus(false); this.mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) { Log.v(TAG,"loul"); } }); //listener for nothing but it allow OnItemClickListener to work this.mListView.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) { } @Override public void onNothingSelected(AdapterView arg0) { } }); 

Establezca estas propiedades:

  android:focusable="false" android:focusableInTouchMode="false" 

para todos sus elementos de UI en su archivo list_item.xml .

si esto no se resuelve en su conjunto de adaptadores:

  v.imageView.setFocusable(false); v.imageView.setFocusableInTouchMode(false);