Я работаю над простой формой входа с 4 типами пользователей. Параметр представления onclicklisteners всегда показывает то же значение v.getId(), которое было нажато в первый раз. Например, если щелкнуть представление ученика, значение идентификатора будет обновлено, но если я нажму на макет администратора, идентификатор останется таким же, как у ученика. Это происходит со всеми 4 разделами. Слушатель:
@Override
public void onClick(View v) {
loginActivityBinding.etPassword.setText("");
loginActivityBinding.etUsername.setText("");
loginActivityBinding.etPassword.setOnFocusChangeListener((v1, hasFocus) -> {
if (!Utils.isValidPassword(loginActivityBinding.etPassword.toString())) {
showToast("Please enter a valid password");
}
});
alertDialog.setPositiveButton("Login", (dialog, which) -> {
if (StringUtils.isEmpty(loginActivityBinding.etUsername.getText().toString(), loginActivityBinding.etPassword.getText().toString())) {
showToast("Error .Please fill all fields");
} else {
Timber.d(String.valueOf(v.getId()));
switch (v.getId()) {
case R.id.ll_Admin:
mainLoginViewModel.login(loginActivityBinding.etUsername.getText().toString(), loginActivityBinding.etPassword.getText().toString(), 1);
break;
case R.id.ll_faculty:
mainLoginViewModel.login(loginActivityBinding.etUsername.getText().toString(), loginActivityBinding.etPassword.getText().toString(), 2);
break;
case R.id.ll_student:
mainLoginViewModel.login(loginActivityBinding.etUsername.getText().toString(), loginActivityBinding.etPassword.getText().toString(), 3);
break;
case R.id.counsellorlayout:
mainLoginViewModel.login(loginActivityBinding.etUsername.getText().toString(), loginActivityBinding.etPassword.getText().toString(), 4);
break;
}
}
});
}
Значение флага, переданное модели представления, остается неизменным после первого щелчка.