#java #android #android-databinding
#java #Android #android-привязка данных
Вопрос:
Я изучал привязку данных, в частности раздел об обработке событий и событиях щелчка. Теперь, я заметил в нескольких уроках YouTube, что мои преподаватели в основном использовали внутренний класс для обработки этих событий. Однако ранее я написал этот код, который реализовал представление.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);
}
}
}
И это работает.
Мне было интересно, не считается ли эта форма обработки событий щелчка хорошей практикой? Я проверил еще несколько руководств, и все они использовали внутренние классы, тем самым вызывая это сомнение.
Спасибо за любую помощь.
Комментарии:
1. Вопрос: Необходимо ли создавать внутренние классы? О: Нет, абсолютно нет. Это просто полезное соглашение 🙂
2. Итак, если я обрабатываю события так, как я сделал выше, то есть без внутреннего класса, это не будет считаться плохой практикой?
3. @ArpanSircar, дело в том,
onClick
что ofMainActivty
ничего не говорит о том, какой кнопке она принадлежит. Это определенно может запутать ситуацию в более сложных примерах, поэтому многие люди могут просто по привычке создавать выделенные классы обработчиков только по этой причине.
Ответ №1:
Вопрос: Необходимо ли создавать внутренние классы?
О: Нет, абсолютно нет. Это просто полезное соглашение 🙂
Вопрос: Это форма обработки событий щелчка… хорошая практика?
A: В общем, любой отдельный «класс» должен делать «одну вещь». Свойства класса и его методы должны соответствовать «абстракции» класса.
Например, класс «Automobile», вероятно, не должен иметь метод «onClick ()». Даже если ваша реализация класса «Automobile» может иметь «button» с методом «onClick ()».
Или у вашего «автомобиля» может быть дюжина разных кнопок. В этом случае я бы определенно предпочел видеть дюжину анонимных внутренних классов, по одному для каждой кнопки. Это было бы короче; это было бы чище.
Однако в вашем примере я не вижу никаких проблем. Выглядит нормально 🙂
Комментарии:
1. Понял. Спасибо за это подробное объяснение.