1
myEditText.setOnKeyListener(new OnKeyListener(){
            public boolean onKey(View v, int keyCode, KeyEvent event){
                if (event.getAction() == KeyEvent.ACTION_DOWN)
                    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
                        todoItems.add(0,myEditText.getText().toString());
                        aa.notifyDataSetChanged();
                        myEditText.setText("");
                        return true;
                    }
                        return false;

                }

有人可以帮我分解这段代码吗,我很难理解 setOnKeyListener 方法。

4

1 回答 1

3

您的问题似乎是您不太了解匿名类。

首先,setOnKeyListener接受一个OnKeyListener对象。您可以创建一个实现此接口的新类,然后实例化它:

class MyKeyListener implements OnKeyListener {
    @Override
    public boolean onKey (View v, int keyCode, KeyEvent event) {
        // ...
    }
}

// On your other method:
myEditText.setOnKeyListener(new MyKeyListener());

我希望这很清楚,因为这几乎是您在 Java 中所做的一切。

但是,Java 允许您通过定义匿名类来避免定义另一个类。为此,您只需new在所需的基类或接口上执行 a ( OnKeyListener),然后添加一个类主体,就好像您正在定义它一样:

myEditText.setOnKeyListener(new OnKeyListener(){
    @Override
    public boolean onKey (View v, int keyCode, KeyEvent event) {
        // ...
    }
});

最后一段代码就是你所拥有的。

于 2013-11-13T23:25:48.700 回答