This is a slightly more general answer with more explanation for future viewers.
Add a text changed listener
If you want to find the text length or do something else after the text has been changed, you can add a text changed listener to your edit text.
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) {
    }
});
The listener needs a TextWatcher, which requires three methods to be overridden: beforeTextChanged, onTextChanged, and afterTextChanged.
Counting the characters
You can get the character count in onTextChanged or beforeTextChanged with   
charSequence.length()
or in afterTextChanged with
editable.length()
Meaning of the methods
The parameters are a little confusing so here is a little extra explanation.
beforeTextChanged
beforeTextChanged(CharSequence charSequence, int start, int count, int after)
- charSequence: This is the text content before the pending change is made. You should not try to change it.
- start: This is the index of where the new text will be inserted. If a range is selected, then it is the beginning index of the range.
- count: This is the length of selected text that is going to be replaced. If nothing is selected then- countwill be- 0.
- after: this is the length of the text to be inserted.
onTextChanged
onTextChanged(CharSequence charSequence, int start, int before, int count)
- charSequence: This is the text content after the change was made. You should not try to modify this value here. Modify the- editablein- afterTextChangedif you need to.
- start: This is the index of the start of where the new text was inserted.
- before: This is the old value. It is the length of previously selected text that was replaced. This is the same value as- countin- beforeTextChanged.
- count: This is the length of text that was inserted. This is the same value as- afterin- beforeTextChanged.
afterTextChanged
afterTextChanged(Editable editable)
Like onTextChanged, this is called after the change has already been made. However, now the text may be modified.
- editable: This is the editable text of the- EditText. If you change it, though, you have to be careful not to get into an infinite loop. See the documentation for more details.
Supplemental image from this answer
