Необходимо оптимизировать ниже приведенный кусок кода. В данный момент есть несколько условий, при выполнении которых изменяется видимость TextEdit и ViewText. Всё выполняется нормально, но код выглядит ужасно..
private static int countErrors = 0;
private void makeError()
{
countErrors++;
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void startSlider_click(View view) {
countErrors = 0;
EditText NameTextEdit = (EditText) findViewById(R.id.enterNameTextEdit);
EditText UserFromTextEdit = (EditText) findViewById(R.id.enterCityEditText);
EditText YearsTextEdit = (EditText) findViewById(R.id.enterYearsTextEdit);
TextView NameText = (TextView) findViewById(R.id.enterNameText);
TextView YearsText = (TextView) findViewById(R.id.enterOldText);
TextView CityText = (TextView) findViewById(R.id.enterCity);
CheckBox ruleBox = (CheckBox) findViewById(R.id.rulesBox);
// Создать класс Validator
// Возможно в аргументы передавать методы
if (!NameTextEdit.getText().toString().equals("")) {
NameTextEdit.setVisibility(View.GONE);
NameText.setVisibility(View.GONE);
} else makeError();
if(!YearsTextEdit.getText().toString().equals("") && Integer.parseInt(YearsTextEdit.getText().toString())<150) {
YearsTextEdit.setVisibility(View.GONE);
YearsText.setVisibility(View.GONE);
} else makeError();
if(!UserFromTextEdit.getText().toString().equals("")) {
UserFromTextEdit.setVisibility(View.GONE);
CityText.setVisibility(View.GONE);
} else makeError();
if(ruleBox.isChecked())
{
ruleBox.setVisibility(View.GONE);
} else makeError();
if(countErrors==0){
DBHelper dbHelper = DBHelper.newInstance(getApplicationContext());
dbHelper.addAccount(NameTextEdit.getText().toString(), UserFromTextEdit.getText().toString(), Integer.parseInt(YearsTextEdit.getText().toString()));
Intent intent = new Intent(this, CreatePlan.class);
startActivity(intent);
this.finish();
}
}
1) Заведите метод, который проверяет пустой ли EditText
, типа:
private boolean isEmpty(TextView textView) {
if(textView==null)
return true;
return (textView.getText().toString().length()==0)?true:false;
}
2) Парные кОнтролы, типа: YearsTextEdit
и YearsText
посадите в один Layout
и устанавливайте флаг видимости сразу на общий Layout
3) Код парсинга строки в целое вынесите в отдельный метод - parseInt
обладает отвратительным свойством выкидывать NumberFormatException
- из-за чего вы можете получить неприятный Überraschung - надо в этом методе его обрабатывать и в случае ошибки выдавать дефолтное значение
4) Перейдите в конце концов на ButterKnife - код намного упростится
5) Почитайте про Java Naming Convention - такое ощущение что вы из лагеря шарпистов :)
6) И еще разберитесь со стилями скобок - или вы пишете открывающие скобки на одной строке с кодом или на новой строке - сразу видно, что у вас стиль хромает. Настройте в своем IDE стили форматирования кода.
Как можно запустить одновременно два потока (не дожидаясь завершения одного из них) на Java?
Как сделать селект с миниатюрами (маленькими изображениями) вместо текста? Попробовал несколько плагинов типа jquery-form-styler или nice-select, ни в том,...
Есть стандартное модальное окно Bootstrap, нужно оставить возможность блокировки контента(data-backdrop="true") но убрать затенение с фона при сохранении...