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
Post a Comment