Pull to refresh

Comments 11

Мысль хорошая, спасибо. Рекомендую добавить возможность стилизации: кастомизация иконок к примеру. Алсо, было бы неплохо добавить конструкторы к чекерам, которые бы принимали идентификатор ресурса вместо строки, чтобы не писать везде getString(). Правда, тогда придется еще объект ресурсов передавать, или контекст.
Идентификатор ресурса кстати сразу решит проблему локализации.
А вместо строки передать getString(resid) громоздко?
Согласен, можно будет добавить вариант с контекстом и resId, чтобы не писать getString().
Тем, что он не является валидатором, а только сообщает об изменениях текста. Собственно, вотчер и используется валидатором, чтобы определять, когда нужно перепроверить условия (если конечно валидатор не работает в «ручном» режиме).
Все равно не понимаю, зачем столько городить.
Ну вот допустим проверка на числовое значение:

private class DigitWatcher implements TextWatcher {
 // я оставлю только 1 нужный метод
 public void afterTextChanged(Editable s) {
  if (!TextUtils.isDigitsOnly(s)) {
   // проверка не прошла
  }
 }
}
Чтобы обрабатывать несколько разных полей ввода (на форме их обычно много) нам пришлось бы или вешать на каждое по вотчеру и выносить проверки в отдельный код, или делать большой свич в одном вотчере, чтобы различать, какое именно поле изменилось.
Плюс в валидаторы добавляются чекеры в нужном порядке и каждый со своим сообщением об ошибке, этот код потом гораздо проще поддерживать.
Если не использовать группировку валидаторов (она нужна далеко не всем) и внешние вьюхи для ошибок, кода будем совсем не много. Попробуйте добавить в свой пример еще хотя бы отдельную проверку на пустоту строки и вывод разных сообщений об ошибках, и вы увидите, что кода получится уже не мало.
Да, примерно так. Вроде, уже не мало, и это они только для одного поля показывают сообщение, а если назначить их на другое поле, то понадобится еще и новый экземпляр WatcherErrorNotifier (либо класс придется расширить).
Кроме того АПИ в явном не гарантирует порядок оповещения вотчеров, добавленных через addTextChangedListener.
Sign up to leave a comment.

Articles