anko - Kotlin addTextChangeListener lambda? -


how build lambda expression edittext addtextchangelistener in kotlin? below gives error:

passwordedittext.addtextchangedlistener { charsequence  ->     try {         password = charsequence.tostring()     } catch (error: throwable) {         raise(error)     } } 

addtextchangedlistener() takes textwatcher interface 3 methods. wrote work if textwatcher had 1 method. i'm going guess error you're getting relates lambda not implementing other 2 methods. have 2 options going forward.

1) ditch lambda , use anonymous inner class

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) {   } }) 

2) create extension method can use lambda expression:

fun edittext.aftertextchanged(aftertextchanged: (string) -> unit) {     this.addtextchangedlistener(object : textwatcher {       override fun beforetextchanged(p0: charsequence?, p1: int, p2: int, p3: int) {       }        override fun ontextchanged(p0: charsequence?, p1: int, p2: int, p3: int) {       }        override fun aftertextchanged(editable: editable?) {         aftertextchanged.invoke(editable.tostring())       }     }) } 

and use extension so:

edittext.aftertextchanged { dosomethingwithtext(it) } 

Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -