Java 是否必须创建内部类来处理数据绑定中的事件?

Java 是否必须创建内部类来处理数据绑定中的事件?,java,android,android-databinding,Java,Android,Android Databinding,我正在学习数据绑定,特别是关于处理事件和单击事件的部分。现在,我在一些YouTube教程中注意到,我的讲师主要使用一个内部类来处理这些事件。然而,在前面,我编写了实现View.OnClickListener的代码,并直接允许我处理单击事件 这是: public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ActivityMainBinding activi

我正在学习数据绑定,特别是关于处理事件和单击事件的部分。现在,我在一些YouTube教程中注意到,我的讲师主要使用一个内部类来处理这些事件。然而,在前面,我编写了实现View.OnClickListener的代码,并直接允许我处理单击事件

这是:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    private ActivityMainBinding activityMainBinding;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        activityMainBinding.enterButton.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View view) {
        if (view == activityMainBinding.enterButton) {
            String name = activityMainBinding.nameEditText.getText().toString();
            String email = activityMainBinding.emailEditText.getText().toString();
            String country = activityMainBinding.countryEditText.getText().toString();
 
            User user = new User(name, email, country);
            activityMainBinding.setUser(user);
        }
    }
}
这是有效的

我想知道,这种处理点击事件的方式不被认为是一种好的做法吗?我又查阅了一些教程,它们都使用了内部类,因此引起了这种怀疑


谢谢你的帮助。

Q:有必要创建内部类吗

A:不,绝对不是。这只是一个有用的惯例:)

问:这是一种处理点击事件的方式吗。。。好的做法

答:一般来说,任何一个“阶级”都应该做“一件事”。类的属性及其方法应该与类的“抽象”相匹配

例如,“Automobile”类可能不应该有“onClick()”方法。即使您的“Automobile”类实现可能有一个带有“onClick()”方法的“button”

或者你的“汽车”可能有十几个不同的按钮。在这种情况下,我更愿意看到十几个匿名内部类,每个按钮一个。它会更短;它会更干净

然而,在你的例子中,我看不出有任何问题。看起来不错:)


问:有必要创建内部类吗?A:不,绝对不是。这仅仅是一个有用的约定:)所以,如果我按照上面的方式处理事件,也就是说,没有内部类,这不会被认为是坏习惯吗?@ArpanSircar,事实是,
MainActivty
onClick
没有说明它属于哪个按钮。在更复杂的例子中,这肯定会让事情变得一团糟,所以很多人可能仅仅因为这个原因就习惯性地创建专用的处理程序类。明白了。谢谢你的详细解释。