tux-world
tux-world

Reputation: 2710

Android get EditText line count after each inserted new line

by this below code i'm trying to show EditText line count after inserting new line, this code work fine only for first new line and after that, for each type character into EditText i get inserted new line log on LogCat

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence text, int start, int before, int count) {
        if (-1 != text.toString().indexOf("\n")) {
            Log.e("new line ", "enter new line" + "");
        }
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
});

Upvotes: 0

Views: 1815

Answers (2)

Shohan Ahmed Sijan
Shohan Ahmed Sijan

Reputation: 4531

You have to count newline:

int counter = 0;

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence text, int start, int before, int count) {
        if(before==0) {
            counter = 0;
            for (int i = 0; i < text.toString().length(); i++) {
                if (text.toString().charAt(i) == '\n') {
                    counter++;
                }
            }
        }
        Log.e("total new line ", "counter: " + counter);
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
});

Upvotes: 3

Amy
Amy

Reputation: 4032

Try this.

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence text, int start, int before, int count) {
        String insertedString =  text.toString();
        if (text.length() > 0 && insertedString.substring(insertedString.length() - 1).equals("\n")) {
             Log.e("new line ", "enter new line " + (channelMessageBox.getLineCount() - 1));
        }
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
});

Upvotes: 1

Related Questions