Pregunta

Tengo una lista en mi aplicación.

Cuando un usuario toca un elemento de lista con el dedo, los fuegos de controlador onListItemClick y tengo que abrir una nueva actividad.

Sin embargo, cuando un usuario utiliza la rueda de desplazamiento / almohadilla para hacer clic, quiero realizar algunas funciones diferentes. Tengo overrode onTrackballEvent y todo funciona perfectamente bien en el modo de rueda de desplazamiento del emulador.

Por desgracia, cuando se prueba en el Samsung Moment, haga clic en el panel táctil dispara el manejador onListItemClick, no el manejador onTrackballEvent.

¿Alguien sabe por qué? ¿Alguien tiene una forma de evitar esto?

¿Fue útil?

Solución

En vista de lista se puede hacer setOnKeyListener y código cuando código clave es KeyEvent.KEYCODE_DPAD_CENTER

listview.setOnKeyListener(new OnKeyListener() {

            public boolean onKey(View v, int keyCode, KeyEvent event) {
               switch(keyCode){
                 case KeyEvent.KEYCODE_DPAD_CENTER:
                    if(event.getAction()==KeyEvent.ACTION_UP){ //to do it only when key is released 
                   // do the code while trackball/pad is clicked
                    }
                   return true;
                 default:
                    return false;
                 }
              }
         }
});

Es bueno para mí. Espero que esto le dará una idea

Otros consejos

Trate anulando el caso dispatchTrackball y apoderarse de esos eventos. Además, es sólo una sugerencia -. Yo no utilizar una acción diferente en la rueda de desplazamiento, porque no todos los teléfonos Android tienen la rueda de desplazamiento

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top