- 我尝试扩展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小部件的正确方法是什么,谢谢。
答案 0 :(得分:2)
您的自定义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系统处理关键事件。
答案 1 :(得分:1)
一个问题可能是您显然试图将代码放在方法的return语句下面。 根据您尝试的操作,您可能希望将代码置于上方或稍后返回超级调用的值。