У меня есть список в моем приложении.
Когда пользователь прикасается к элементу списка пальцем, загорается обработчик onListItemClick, и у меня есть его открытие нового действия.
Однако, когда пользователь использует трекбол/пэд для клика, я хочу выполнить некоторые другие функции. Я переделал onTrackballEvent, и все работает отлично в режиме эмулятора эмулятора.
К сожалению, при тестировании на Samsung Moment нажатие на трекпад запускает обработчик onListItemClick, а не обработчик onTrackballEvent.
Кто-нибудь знает, почему? У кого-нибудь есть способ обойти это?
В 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;
}
}
}
});
Это работает для меня. Надеюсь, это даст вам некоторую идею.
Попробуйте переопределить событие dispatchTrackball
и захватить эти события. Кроме того, просто предложение - я бы не использовал другое действие для трекбола, потому что не все Android-телефоны имеют трекбол.