onTrackballEvent не стреляет на Samsung Момент

1

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

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

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

К сожалению, при тестировании на Samsung Moment нажатие на трекпад запускает обработчик onListItemClick, а не обработчик onTrackballEvent.

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

Теги:
listview
trackball

2 ответа

1
Лучший ответ

В listview вы можете установитьOnKeyListener и код, код которого является 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;
                 }
              }
         }
});

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

  • 0
    Это почти работает. Когда я нажимаю на клавиатуру, мой код выполняется. К сожалению, когда я отпускаю кнопку, мой код выполняется во второй раз. Таким образом, код выполняется дважды для каждого нажатия трекбола / пэда.
  • 0
    @Andrew Из аргумента KeyEvent вы можете определить keyup и keydown. Я отредактировал код. Теперь он выполняется только один раз
Показать ещё 3 комментария
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню