Domanda

Ho una lista nella mia app.

Quando un utente tocca una voce dell'elenco con il dito, i fuochi gestore onListItemClick e ce l'ho l'apertura di una nuova attività.

Tuttavia, quando un utente utilizza la trackball / pad per cliccare, voglio eseguire alcune funzionalità diverse. Ho overrode onTrackballEvent e tutto funziona perfettamente bene in modalità trackball dell'emulatore.

Purtroppo, durante il test sul Samsung Moment, facendo clic sul trackpad spara il gestore onListItemClick, non il gestore onTrackballEvent.

Qualcuno sa perché? Qualcuno ha un modo per aggirare questo?

È stato utile?

Soluzione

In ListView è possibile setOnKeyListener e ti codice quando keycode è 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;
                 }
              }
         }
});

E 'funziona per me. Spero che questo vi darà qualche idea

Altri suggerimenti

Prova sovrascrivendo l'evento dispatchTrackball e afferrare quegli eventi. Inoltre, solo un suggerimento -. Non vorrei usare una diversa azione sulla trackball perché non tutti i telefoni Android hanno la trackball

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top