是否必须创建内部 类 来处理 DataBinding 中的事件?

Is it mandatory to create inner classes to handle events in DataBinding?

我正在学习数据绑定,尤其是关于处理事件和点击事件的部分。现在,我注意到在一些 YouTube 教程中,我的讲师主要使用内部 class 来处理这些事件。但是,早些时候,我编写了实现 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);
        }
    }
}

这行得通。

我想知道,这种处理点击事件的方式不是一个好的做法吗?又查了几个教程,都用了innerclasses,所以产生了这个疑问

感谢您的帮助。

问:是否需要创建内部类?

A: No, absolutely not. It's merely a useful convention :)

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

A: In general, any individual "class" should do "one thing". The class's properties and its methods should match the class's "abstraction".

For example, an "Automobile" class should probably not have an "onClick()" method. Even if your "Automobile" class implementation might have a "button", with an "onClick()" method.

Or your "Automobile" might have a dozen different buttons. In that case, I'd definitely prefer to see a dozen anonymous inner classes, one for each button. It would be shorter; it would be cleaner.

In your example, however, I don't see any problem. It looks fine :)