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