Вопрос

У меня есть список в моем приложении.

Когда пользователь затрагивает элемент списка пальцем, обработчик onlistiTemClick стреляет, и я открывает новое действие.

Однако, когда пользователь использует Trackball/Pad, чтобы нажать, я хочу выполнить различные функции. Я отменял OnTrackBalleVent, и все прекрасно работает в режиме трекбола эмулятора.

К сожалению, при тестировании в момент Samsung нажимает на трекпад, стреляет в обработчика OnListIteMClick, а не обработчика OnTrackBalleVent.

Кто -нибудь знает, почему? У кого -нибудь есть способ обойти это?

Это было полезно?

Решение

В ListView вы можете SetOnKeyListener и код, когда 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;
                 }
              }
         }
});

Это работает для меня. Надеюсь, это даст вам представление

Другие советы

Попробуйте переопределить dispatchTrackball событие и возьмите эти события. Кроме того, просто предложение - я бы не использовал другое действие на трекболе, потому что не все телефоны Android имеют трекбол.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top