web-dev-qa-db-fra.com

Compter les caractères dans l'écouteur EditText Changed

Dans mon projet, j'ai un EditText. Je veux compter les caractères dans le EditText et le montrer dans un TextView. J'ai écrit le code suivant et cela fonctionne bien. Cependant, mon problème est quand je clique Backspace ça compte, mais il faut que je décrémente le nombre. Comment puis-je envisager Backspace?

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){}
}); 
272
Hesam

Utilisation

s.length()

Ce qui suit a déjà été suggéré dans l’une des réponses, mais sa très inefficace

textMessage.getText().toString().length()
141
xtempore

que diriez-vous de simplement obtenir la longueur du caractère dans votre EditText et l'afficher?

quelque chose le long de la ligne de

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

peu de changement dans votre code:

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){}
}); 
27
KKumar

TextWatcher maritalStatusTextWatcher = new TextWatcher () { @Passer outre public vide beforeTextChanged (CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        try {
            if (charSequence.length()==0){
                topMaritalStatus.setVisibility(View.GONE);
            }else{
                topMaritalStatus.setVisibility(View.VISIBLE);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
};
0
Chandan Bera