-我尝试扩展ListView小部件以覆盖onKeyDown方法,如下所示:

public class MyListView extends ListView {

    public MyListView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        return super.onKeyDown(keyCode, event);

        // My instructions
    }
}


-在我的xml文件中:

<com.test.two.MyListView android:layout_width="150dp"
    android:layout_height="match_parent" android:id="@+id/lv"




-在我的活动中:

MyListView lv = (MyListView) findViewById(R.id.lv);


但它不起作用,扩展列表视图小部件的正确方法是什么,谢谢。

最佳答案

您的自定义ListView应该实现View.OnKeyListener:

public class MyListView extends ListView implements View.OnKeyListener


并应将其注册为列表视图的onKey侦听器:

lv.setOnKeyListener(this)


它还应该重点接收onKey事件

lv.setFocusableInTouchMode(True);
lv.requestFocus();


最后,如果您需要接收除keyDown以外的按键事件,则应从onKey()返回true,以防止Android系统处理按键事件。

09-30 11:33