Отключить onKeyDown для ListView? - PullRequest
0 голосов
/ 20 декабря 2011

Как я могу отключить onKeyDown списка?Я хочу, чтобы onKeyDown действия обрабатывал keyEvent и только keyEvent.Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 марта 2016

Используйте этот класс

public class CustomListView extends ListView {

public CustomListView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if ((KeyEvent.KEYCODE_DPAD_UP == event.getKeyCode() || KeyEvent.KEYCODE_DPAD_DOWN == event.getKeyCode())) {
        //handle key events here
    }
    return false;
}

}
0 голосов
/ 20 декабря 2011

Если вы расширяете свой список с помощью ListActivity, то ниже вам будет полезен

onListItemClick :

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    String item = (String) getListAdapter().getItem(position);
    Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}

OnKeyDown:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    super.onKeyDown(keyCode, event);
        switch(keyCode)
        {
            case KeyEvent.KEYCODE_CAMERA:
             Toast.makeText(ListViewActivity.this, "Pressed Camera Button", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_1:
             Toast.makeText(ListViewActivity.this, "Pressed 1", Toast.LENGTH_SHORT).show();
                return true;
            case KeyEvent.KEYCODE_HOME:
             Toast.makeText(ListViewActivity.this, "Pressed Home Button", Toast.LENGTH_SHORT).show();
                return true;

            case KeyEvent.KEYCODE_BACK:
             Toast.makeText(ListViewActivity.this, "Pressed Back Button", Toast.LENGTH_SHORT).show();
                finish();
                return true;
        }

        return false;
    }
...