-我尝试扩展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系统处理按键事件。