यह मुझे परेशान कर रहा था कि मेरी EditText क्षेत्रों में से सभी के लिए एक श्रोता को लागू करने के लिए आवश्यक मुझे बदसूरत, वर्बोज़ कोड के लिए तो मैं नीचे वर्ग ने लिखा है: जैसे आप उपयोग कर सकते हैं। इस पर ठोकर खाने के लिए उपयोगी हो सकता है।
public abstract class TextChangedListener<T> implements TextWatcher {
private T target;
public TextChangedListener(T target) {
this.target = target;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
this.onTextChanged(target, s);
}
public abstract void onTextChanged(T target, Editable s);
}
अब श्रोता को लागू करना थोड़ा क्लीनर है।
editText.addTextChangedListener(new TextChangedListener<EditText>(editText) {
@Override
public void onTextChanged(EditText target, Editable s) {
//Do stuff
}
});
ऐसा कितनी बार आग के रूप में, एक हो सकता है किसी दिए गए एक
फोकस श्रोता जोड़ने की कोशिश के बाद
//Do stuff
में उनकी इच्छा के कोड को चलाने के लिए एक चेक, को लागू कर सकता है जब editText फ़ोकस लेना , इसका मतलब है कि उपयोगकर्ता ने इसे संपादित करना शुरू कर दिया है, और जब संपादन टेक्स्ट फोकस खो देता है, तो इसका मतलब है कि संपादन समाप्त हो गया है – Houcinehttps://github.com/henrychuangtw/AutoInsertEditText – HenryChuang