Уменьшить экземпляр объекта / класса - PullRequest
0 голосов
/ 08 января 2019

У меня есть поле EditText, и я хочу проверить правильность ввода для этого.
Я применил MVVM + привязку данных и вызвал метод onTextChanged () во ViewModel
Источник:

XML

android:onTextChanged="@{(text, start, before, count) -> viewModel.onMyTextChanged(text)}"

ViewModel.kt

fun onMyTextChanged(text) {
   // Show icon error if invalid, Show icon check done if valid
   val isValid = MyValidation(text).checkValid()
}

MyValidation.kt

class MyValidation(text: String){
  fun checkValid(): Boolean {  
    // Check text here with Regex Pattern
    <-- TODO  -->
    // Check instance time of class
    Log.d("INSTANCE", this.hashCode().toString() )
  }  
}

Журнал консоли:

INSTANCE : 159625389
INSTANCE : 178364275
INSTANCE : 190324272
...

Вопрос:

При вводе текста в поле EditText будет вызываться метод onMyTextChanged с временем выполнения = длиной введенного текста.
Следовательно, экземпляр класса MyValidation также увеличивается. (См. Журнал)

Я думал об использовании Object вместо Class, чтобы сделать Singleton статическим. Но я путаю, что есть другое решение для этого случая?

1 Ответ

0 голосов
/ 08 января 2019

Для вашего случая использования вы можете использовать Расширение Котлина Функция , чтобы проверить достоверность текста. Нет необходимости в отдельном классе для проверки правильности. Функцию расширения будет действительно удобно использовать.

Напишите приведенный ниже код там же, где вы проверяете правильность строки, но вне тела класса.

fun String.isValidString(): Boolean {
 // use this.length etc to refer to current string
 // Check text here with Regex Pattern
    <-- TODO  -->
    // log your String
    Log.d("Your String", this)
}

тогда ваш код будет выглядеть так:

fun onMyTextChanged(text) {
   // Show icon error if invalid, Show icon check done if valid
   val isValid = text.isValidString()
}

Дополнительно: Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...