Frage

Ich habe eine Liste in meiner app.

Wenn ein Benutzer berührt ein Listenelement mit dem Finger, das onListItemClick Handler Feuer, und ich habe es eine neue Aktivität zu öffnen.

Wenn jedoch ein Benutzer den Trackball / Pad klicken, möchte ich einige andere Funktionen auszuführen. Ich habe overrode onTrackballEvent und alles funktioniert völlig in Ordnung in dem Trackball-Modus des Emulators.

Leider, wenn auf dem Samsung Moment testen, klicken Sie auf die Trackpad feuert den onListItemClick Handler, nicht der onTrackballEvent Handler.

Hat jemand wissen, warum? Hat jemand einen Weg, um dieses?

War es hilfreich?

Lösung

In Listenansicht können Sie setOnKeyListener und tun Sie Code, wenn keycode ist 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 funktioniert für mich. Hoffe, das gibt Ihnen eine Vorstellung

Andere Tipps

Versuchen Sie, die dispatchTrackball Ereignis überschreiben und diese Ereignisse greifen. Auch nur ein Vorschlag -. Ich würde nicht eine andere Aktion auf dem Trackball verwenden, da nicht alle Android-Handys auf den Trackball haben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top