Cómo implementar tanto ontouch y también onfling en un mismo listview?
Tengo un listview e implementado onclick y también onfling.problem es cuando hago fling (deslizar de izquierda a derecha), evento onclick de listview también se está ejecutando. ¿Cómo superar este problema? Cómo diferenciar el tacto (golpecito) y el lanzamiento (golpe) en listview?
listClickListener = new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v,int position, long id) { //Job of Onclick Listener } }; mContactList.setOnItemClickListener(listClickListener); mContactList.setAdapter(adapter); // Gesture detection gestureDetector = new GestureDetector(new MyGestureDetector(prosNos)); gestureListener = new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (gestureDetector.onTouchEvent(event)) { return true; } return false; } }; mContactList.setOnTouchListener(gestureListener); } public class MyGestureDetector extends SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // My fling event return false; } }
PS ¿Es posible? Para comentar el OnClickListener de ListView y escribir la misma lógica en cualquier onTouchEvent? Pero todavía no tengo ninguna duda que onFling llamará onTouch. ¿Estoy bien?
- Obtener elemento de ListView sólo con OnTouchListener
- Cómo combinar OnClickListener y OnTouchListener para un ImageButton
- Implementación de la interfaz View.IOnTouchListener
- Android: Detectar el botón ACTION_UP fuera del evento
- Reducir animadamente el tamaño del botón en la prensa y recuperar su tamaño en la versión
- Android: pasar el evento de gestos a otra vista
- ¿Cómo hacer algo repetidamente mientras se presiona un botón?
- Saltar ImageView mientras arrastra. Los valores de getX () y getY () saltan
- "Presione y mantenga presionado" en Android necesita cambiar estados (selector XML personalizado) usando onTouchListener
- No puede manejar simultáneamente los eventos de clic y de toque
- Cómo setOnTouchListener () en un ListPreference?
- Android: ¿Cómo determinar el índice de caracteres de la posición de un evento táctil en TextView?
- Android WindowManager TYPE_SYSTEM_ALERT Diseño en el tacto
Pseudo código de respuesta para aclarar los comentarios anteriores. Cómo hacer que se llame el método onTouch de MySimpleGestureListener.
public class GestureExample extends Activity { protected MyGestureListener myGestureListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myGestureListener = new MyGestureListener(this); // or if you have already created a Gesture Detector. // myGestureListener = new MyGestureListener(this, getExistingGestureDetector()); // Example of setting listener. The onTouchEvent will now be called on your listener ((ListView)findViewById(R.id.ListView)).setOnTouchListener(myGestureListener); } @Override public boolean onTouchEvent(MotionEvent event) { // or implement in activity or component. When your not assigning to a child component. return myGestureListener.getDetector().onTouchEvent(event); } class MyGestureListener extends SimpleOnGestureListener implements OnTouchListener { Context context; GestureDetector gDetector; public MyGestureListener() { super(); } public MyGestureListener(Context context) { this(context, null); } public MyGestureListener(Context context, GestureDetector gDetector) { if(gDetector == null) gDetector = new GestureDetector(context, this); this.context = context; this.gDetector = gDetector; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX, velocityY); } @Override public boolean onSingleTapConfirmed(MotionEvent e) { return super.onSingleTapConfirmed(e); } public boolean onTouch(View v, MotionEvent event) { // Within the MyGestureListener class you can now manage the event.getAction() codes. // Note that we are now calling the gesture Detectors onTouchEvent. And given we've set this class as the GestureDetectors listener // the onFling, onSingleTap etc methods will be executed. return gDetector.onTouchEvent(event); } public GestureDetector getDetector() { return gDetector; } } }
- OnKeyDown en un servicio? (Teclas directas globales)
- No puede pasar null a execute (); Método de AsyncTask en android 4.0