As Android Developer, we have used TextWatcher callback to listen any of the changes in the EditText.
Something like this :
editText.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(p0: Editable?) { } override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { } override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { } })
Data Binding Implementation
In Your xml Layout use OnTextChanged property
android:onTextChanged="@{model.onPasswordTextChanged}"
And call the view model user defined method to handle text changes in EditText. Full Snippet is below :
<EditText android:id="@+id/password_et" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/username_et" android:layout_marginTop="10dp" android:hint="Password" android:onTextChanged="@{model.onPasswordTextChanged}" android:inputType="textPassword" />
ViewModel User defined method can be like this (implement as per your implementation):
fun onPasswordTextChanged(s: CharSequence,start: Int,before : Int, count :Int){ //TODO write your implementation here ... }
Now no more of TextWatcher callback in your View(Activity/Fragment), Instead use data binding to avoid boilerplate code.
Use MVVM, implement user defined method’s in ViewModel to handle OnTextChanged in xml.
Hope to see more of this implementation in future :-)
Cheers!!
Thank you for giving the information and its usefull for me training with placement company in Hyderabad
ReplyDeleteFound Very informative method. Thanks for sharing.
ReplyDeleteVisit for Best Event Technology Services in India