OnClickListener onLongClickListener 逻辑

OnClickListener onLongClickListener logic

最近我开始从头开始编程,我正在从 thenewboston 的教程中学习,但我并不真正了解它是如何工作的,也找不到任何答案。那是我苦苦挣扎的代码,它有效,但我真的不明白为什么 beetwen () 将新的 Button.OnClick 侦听器括起来,然后是 OnLongClickListener View v 在这些方法中来自哪里?是的,我对对象编程的了解可能比它所要求的要少一些,但我真的不喜欢用它来学习其他方式。

Button przycisk = (Button) findViewById(R.id.mojprzycisk);

    przycisk.setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) { WHERE THIS  V IS FROM ?
                    TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
                    mojtekst.setText("Good job Boss");

                }
            }


    );
    przycisk.setOnLongClickListener(
            new Button.OnLongClickListener() {

                public boolean onLongClick(View v){   <-----WHERE IS IT FROM?
                    TextView mojtekst = (TextView)   findViewById(R.id.mojtekst);
                    mojtekst.setText("HOLY CARP THAT WAS A LONG ONE");
                return true;}}



    );

您应该查看 interfaces for java. A great tutorial for the same is also given here. Once you understand the concepts of interfaces, you can see that OnClickListener and OnLongClickListener are interfaces, and they have methods like onClick(View v) and onLongClick(View v),它们在单击或长按特定视图时调用。他们 return 支持单击并保持的视图。

当你说

przycisk.setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) { WHERE THIS  V IS FROM ?
                    TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
                    mojtekst.setText("Good job Boss");

                }
            }


    );

您正在创建接口的新实例。上面的代码为了便于阅读也可以写成如下

Button.OnClickListener onClickListener = new Button.OnClickListener() {

    @Override
    public void onClick(View v) {
        TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
        mojtekst.setText("Good job Boss");
    }
};
przycisk.setOnClickListener(onClickListener);

所以基本上您是在创建接口的一个实例,并且由于它是一个接口,您需要重写方法 onClick() 并给出它的定义。

简而言之,无论您设置 onClickListeneronLongClickListener 哪个视图,该视图都将在 onClick(View v)onLongClick(View v) 方法中 returned .该视图将是 v.