如何扩展listview?

时间:2012-01-02 10:06:01

标签: android listview customization

- 我尝试扩展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小部件的正确方法是什么,谢谢。

2 个答案:

答案 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语句下面。 根据您尝试的操作,您可能希望将代码置于上方或稍后返回超级调用的值。