SetOnItemClickListener () no funciona en Custom ListView @ Android
He implementado un ListView
personalizado extendiendo 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 por ella sin ningún problema.
Pero el ListView
no parece responder a la setOnItemClickListener()
en absoluto, Así que tuve que encontrar una solución al establecer el oyente de clics en el getView()
del texto dentro de cada fila que obviamente es crear problemas cuando estoy tratando de reutilizar El adapter
. ¿Alguien tiene una solución?
- Vista personalizada vacía en ListView android
- No se puede resolver el método .runOnUiThread
- Android listview diferentes vistas para cada elemento
- Listview en Android mientras obtiene datos de un servidor
- Cambio de fondo en la biblioteca de tablas de interfaz de usuario de Android (thiagolocatelli)
- Cómo desplazar un ListView en android programatically a hasta gesto hacia abajo
- Obtener un evento cuando un elemento ListView está visible o no
- Cómo establecer el ancho de la ListView en un PopupWindow en Android?
- Android ListView Color del texto
- Añadiendo un listclient de onclick a listview (android)
- Casilla de verificación en CursorAdapter
- OpenGLRenderer, se encontró el glifo no válido
- ListView: ¿Cómo permanecer resaltado / seleccionado después de pulsar el botón Atrás?
Prueba esto
Para ListView,
final ListView list = (ListView) findViewById(R.id.list); list.setItemsCanFocus(false);
También, cerciórese de que para CheckBox dentro del artículo de la lista defina focusable false
android:focusable="false" android:focusableInTouchMode="false"
Vieja respuesta: escribí en el post anterior aquí
android:focusable="false" android:clickable="false"
No ayudará cuando ImageButton esté en la visión de encargo. Uno debe utilizar button.setFocusable(false);
Durante el tiempo de ejecución (desde el código fuente de java)
Edit: Existe una solución aún más elegante. Trate de añadir android:descendantFocusability="blocksDescendants"
en el diseño raíz del elemento de lista. Esto hará que los clics onListItem sean posibles y por separado u puede manejar clics Button o ImageButton
Para un ListView donde se establecen las vistas de elementos a CheckBox
android:focusable="false" android:clickable="false"
¿Has creado algún ViewHolder en tu clase de adaptador extendida? Si es así, entonces haga una instancia de su 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 justo poner un onItemSelectedListener bajo 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 los 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);
- ¿Cómo puedo agregar botones en el diseño de forma programática uno por uno en varias líneas?
- ¿Emulador de Android cómo utilizar telnet localhost 5554?