दिलचस्प पोस्ट
पैरामीटर में डबल उद्धरण बचें क्रोम कास्ट एक्सटेंशन स्थापित नहीं है या गुप्त का उपयोग करते हुए Google क्रोम डास्ट प्रेषक त्रुटि क्या VBA Excel के उदाहरणों में पहुंच सकता है? स्विफ्ट की जांच करने के लिए शॉर्टहैंड क्या स्विफ्ट में एक ऑब्जेक्ट मौजूद है? MySQL से कैसे चयन करें जहां टेबल नाम वैरिएबल है क्या मैं विजुअल स्टूडियो 2010 के सी ++ कंपाइलर का उपयोग विज़ुअल स्टूडियो 2008 के सी ++ रनटाइम लाइब्रेरी के साथ कर सकता हूं? सी # में डबल मानों की तुलना करना जावा का उपयोग कर कैलेंडर समयक्षेत्र कैसे प्रबंधित करें? यूनिकोडडेकोड एर्रर: 'एएससीआई' कोडेक स्थिति 1 में बाइट 0x एफ डीकोड नहीं कर सकता जावास्क्रिप्ट: ईवेंट श्रोता को हटा दें Android डिवाइस नाम प्राप्त करें कर्ली ब्रेस प्लेसमेंट के आधार पर एक परिणाम भिन्न क्यों होता है? कैसे एक bash खोल स्क्रिप्ट धीमी स्टार्टअप प्रोफाइल करने के लिए? टेम्पलेट मित्र ऑडियो वॉल्यूम स्तर कैसे प्राप्त करें, और आईओएस पर वॉल्यूम की सूचनाएं बदल दी जाए?

संपादन टेक्स में श्रुति गिनती श्रोता परिवर्तित

मेरी परियोजना में मेरे पास एक EditText मैं EditText में वर्णों को गिनना चाहता हूं, और उस संख्या को एक TextView में दिखाएं। मैंने निम्नलिखित कोड लिखा है और यह ठीक काम करता है हालांकि, मेरी समस्या तब होती है जब मैं बैकस्पेस को क्लिक करता हूं, लेकिन मुझे संख्या कम करने की आवश्यकता है मैं बैकस्पेस पर विचार कैसे कर सकता हूं?

 tv = (TextView)findViewById(R.id.charCounts); textMessage = (EditText)findViewById(R.id.textMessage); textMessage.addTextChangedListener(new TextWatcher(){ public void afterTextChanged(Editable s) { i++; tv.setText(String.valueOf(i) + " / " + String.valueOf(charCounts)); } public void beforeTextChanged(CharSequence s, int start, int count, int after){} public void onTextChanged(CharSequence s, int start, int before, int count){} }); 

वेब के समाधान से एकत्रित समाधान "संपादन टेक्स में श्रुति गिनती श्रोता परिवर्तित"

उपयोग

 s.length() 

निम्नलिखित एक बार एक जवाब में सुझाव दिया गया था, लेकिन इसकी बहुत अक्षम

 textMessage.getText().toString().length() 

कैसे अपने संपादन टेक्स्ट में चारों की लंबाई प्राप्त करने और इसे प्रदर्शित करने के बारे में?

की रेखा के साथ कुछ

 tv.setText(s.length() + " / " + String.valueOf(charCounts)); 

आपके कोड में बहुत कम बदलाव:

 TextView tv = (TextView)findViewById(R.id.charCounts); textMessage = (EditText)findViewById(R.id.textMessage); textMessage.addTextChangedListener(new TextWatcher(){ public void afterTextChanged(Editable s) { tv.setText(String.valueOf(s.toString().length())); } public void beforeTextChanged(CharSequence s, int start, int count, int after){} public void onTextChanged(CharSequence s, int start, int before, int count){} }); 

भविष्य के दर्शकों के लिए अधिक स्पष्टीकरण के साथ यह थोड़ा अधिक सामान्य जवाब है

एक पाठ परिवर्तित श्रोता जोड़ें

यदि आप पाठ की लंबाई खोजना चाहते हैं या कुछ और करने के बाद पाठ को बदल दिया गया है, तो आप अपने संपादन पाठ में पाठ परिवर्तित श्रोता जोड़ सकते हैं।

 EditText editText = (EditText) findViewById(R.id.testEditText); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) { } @Override public void onTextChanged(CharSequence charSequence, int start, int before, int count) { } @Override public void afterTextChanged(Editable editable) { } }); 

श्रोता को beforeTextChanged आवश्यकता होती है, जिसके लिए ओवरराइड होने के तीन तरीकों की आवश्यकता होती है: beforeTextChanged , onTextChanged beforeTextChanged , onTextChanged , और afterTextChanged

वर्णों की गिनती

आप उस पर वर्ण की गणना कर सकते हैं

 charSequence.length() 

या बाद में afterTextChanged साथ afterTextChanged गया

 editable.length() 

तरीकों का अर्थ

पैरामीटर थोड़ा भ्रामक हैं इसलिए यहां थोड़ा अतिरिक्त विवरण दिया गया है।

beforeTextChanged

beforeTextChanged(CharSequence charSequence, int start, int count, int after)

  • charSequence : लंबित परिवर्तन किए जाने से पहले यह टेक्स्ट सामग्री है आपको इसे बदलने की कोशिश नहीं करनी चाहिए।
  • start : यह वह स्थान है जहां नया पाठ डाला जाएगा। अगर कोई सीमा चयनित है, तो यह सीमा का प्रारंभ सूचकांक है
  • count : यह चयनित पाठ की लंबाई है जिसे प्रतिस्थापित किया जा रहा है। यदि कुछ भी नहीं चुना जाता है तो count 0 होगी
  • after : यह सम्मिलित किए जाने वाले पाठ की लंबाई है।

onTextChanged

onTextChanged(CharSequence charSequence, int start, int before, int count)

  • charSequence : यह परिवर्तन सामग्री के बाद पाठ सामग्री है। आपको इस मूल्य को यहाँ संशोधित करने की कोशिश नहीं करनी चाहिए। यदि आप की आवश्यकता है तो afterTextChanged बाद में editable को संशोधित करें
  • start : यह start का सूचकांक है जहां नया पाठ डाला गया था।
  • before : यह पुराना मूल्य है यह पहले चयनित पाठ की लंबाई है जो प्रतिस्थापित किया गया था। इससे पहले की count रूप में यह वही मूल्य है।
  • count : यह उस पाठ की लंबाई है जो डाला गया था। यह पहले के after रूप में एक जैसा मान है।

afterTextChanged

afterTextChanged(Editable editable)

इस तरह के परिवर्तन पर पहले से ही बना दिया गया है, जिसे बाद में कहा जाता है। हालांकि, अब पाठ को संशोधित किया जा सकता है

  • editable : यह संपादन टेक्स्ट का संपादन योग्य टेक्स्ट है यदि आप इसे बदलते हैं, हालांकि, आपको सावधान रहना होगा कि वह अनंत लूप में न जाए। अधिक जानकारी के लिए दस्तावेज़ीकरण देखें।

इस उत्तर से पूरक छवि

यहां छवि विवरण दर्ज करें