2012-01-02 84 views
1

-I尽量延长一个ListView控件覆盖的onkeydown方法是这样的:如何扩展一个listview?

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); 

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

+0

你能解释你想要存档的内容吗? – Flo 2012-01-02 10:09:55

+0

哪一个不工作onKeyDown或ListView?为什么要扩展ListView?什么是实际要求? – 2012-01-02 10:10:41

回答

1

一个问题可能是您显然尝试将您的代码置于该方法的return-statement之下。 根据您尝试执行的操作,您可能希望将代码放在上面或稍后返回超级调用的值。

2

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

public class MyListView extends ListView implements View.OnKeyListener 

,你应该把它注册为您的列表视图的安其听众:

lv.setOnKeyListener(this) 

它也应该有重点,收到安其事件

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

最后,如果您需要接收除keyD之外的其他重要事件自己,你应该从onKey()返回true,以防止Android系统处理关键事件。