addTextChangedListener()
एक TextWatcher
जो 3 तरीकों के साथ एक अंतरफलक है लेता है। आपने जो लिखा वह केवल तभी काम करेगा जब TextWatcher
में केवल 1 विधि थी। मैं अनुमान लगा रहा हूं कि आप जो त्रुटि प्राप्त कर रहे हैं वह आपके लैम्ब्डा से संबंधित है जो अन्य 2 तरीकों को लागू नहीं करती है। आपके पास 2 विकल्प आगे बढ़ रहे हैं।
1) लैम्ब्डा खाई और बस ताकि आप एक लैम्ब्डा अभिव्यक्ति का उपयोग कर सकते हैं एक गुमनाम आंतरिक वर्ग
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) एक विस्तार पद्धति बनाएं का उपयोग करें:
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())
}
})
}
और फिर जैसे एक्सटेंशन का उपयोग इसलिए:
editText.afterTextChanged { doSomethingWithText(it) }
स्रोत
2016-11-13 01:57:19
यह क्या त्रुटि देता है? – voddan