1. 程式人生 > >ListView設定setOnKeyListener後OnKey無法被呼叫的問題

ListView設定setOnKeyListener後OnKey無法被呼叫的問題

給ListView設定setOnKeyListener,然而OnKey始終無法被呼叫,網上給出的解決方法大多都是setFocusable(true).

setFocusable的原始碼如下

 @Override
    public void setFocusable(boolean focusable) {
        final T adapter = getAdapter();
        final boolean empty = adapter == null || adapter.getCount() == 0;

        mDesiredFocusableState = focusable;
        if (!focusable) {
            mDesiredFocusableInTouchModeState = false;
        }

        super.setFocusable(focusable && (!empty || isInFilterMode()));
    }

可見,在setFocusable(true)前必須保證adapter 不為空才有效!

(如果OnKey仍然無法被呼叫,試試requestFocus)