Los elementos de ListView no se pueden hacer clic después de establecer el oyente de clics en getView ()
He buscado alrededor y no han salido con una solución (tal vez no usando las palabras clave correctas).
Así, tengo un ListView personalizado que su artículo se puede arrastrar alrededor cuando el artículo hace clic largo. Dentro de su elemento, hay un ImageView y LinearLayout que contiene dos TextViews. Las acciones se realizan cuando se hace clic en LinearLayout o ImageView.
- Picasso carga imágenes con una imagen errónea en un adaptador de lista
- Margen en los elementos de ListView en android
- Arrastrar y soltar listitem de un listview a otro listo de listview
- Android: Cómo medir la altura total de ListView
- Descargar varios archivos con una barra de progreso en ListView Android
Para ello, he utilizado setOnItemLongClickListener en mi DragListView que extiende ListView, para iniciar la acción de arrastrar, y onInterceptTouchEvent para gestionar la acción de arrastrar.
Entonces, he construido un adaptador personalizado que extiende BaseAdapter y overrided su getView () para implementar los elementos secundarios en la fila. El LinearLayout y ImageView han sido setOnClickListener.
El problema es, el LinearLayout y ImageView son capaces de hacer sus cosas, pero el onItemLongClick no se llama.
El oyente dentro getView ();
holder.delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Do something }
Para el artículo haga clic largo (arrastre iniciador)
setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { //Do something }
¡Muchas gracias!
- ListViewDraggingAnimation roto en Android 5 Lollipop
- ListView con los botones y la matriz estática de la secuencia
- crear Json desde sqlite en Android
- Listview error: "Su contenido debe tener un ListView cuyo atributo id es 'android.R.id.list'"
- Using notifyItemRemoved o notifyDataSetChanged con RecyclerView en Android
- Android - ListView diapositiva izquierda / derecha como Samsung contacto ListView
- Cómo crear ListView multinivel en Android
- Android L: Desplazamiento rápido para el RecyclerView
Creo que un detector de gestos es una de las maneras de manejar eventos. Normalmente, sin embargo, se utiliza un detector de gestos cuando queremos detectar un gesto y no una pulsación prolongada.
La razón por la que onItemLongClick no se llama es que onClickListener puede consumir un evento de toque. En esa razón, si desea manejar onItemLongClick, interceptar evento táctil y enviarlo a las vistas que desea manejar.
Puede encontrar más detalles en el siguiente enlace. http://developer.android.com/guide/topics/ui/ui-events.html
Ok, acaba de descubrir la solución a mí mismo. En lugar de usar onItemLongClickListener, creo un detector de gestos para detectar la presión prolongada. A continuación, reemplazo dispatchTouchEvent y forzar a buscar primero la pulsación larga, luego devolver super.dispatchTouchEvent y los siguientes eventos táctiles. ¡Sugerencias aún son bienvenidas!
- Uso de la cámara de teléfonos, después de capturar la actividad de la imagen no volver a la actividad particular
- SQL eliminar de una tabla + un jointable?