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

标签 java android android-databinding

我正在学习 DataBinding,特别是关于处理事件和点击事件的部分。现在,我注意到在一些 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);
        }
    }
}
这有效。
我想知道,这种处理点击事件的形式不被认为是一种好习惯吗?我检查了更多的教程,它们都使用了内部类,从而引起了这个疑问。
谢谢你的帮助。

最佳答案

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

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 :)

关于java - 是否必须创建内部类来处理 DataBinding 中的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64214037/

相关文章:

java - 生成的 XSD 不会解码 XML

java - MismatchedTokenException : expecting "set", 发现 '='

android - 将外部依赖项上传到本地Maven存储库

android - 如何使用 Universal image Loader 在本地加载资源

android - Android MVVM + 数据绑定(bind) + 架构组件示例(ViewModel 和 Room)

java - 从关系数据库中删除实体时出现问题

java - Android - 计算速度(Nmea 字符串来获取速度)

android - 使用 LongClick 打开 Dialog 并聚焦 Dialog

java - 找不到值为 boolean 值类型的属性 'app:vm' 的 GETTER

与 Kotlin、BaseObservable 和自定义委托(delegate)的 Android 数据绑定(bind)