Как я могу получить новое введенное значение на EditText с TextWatcher - PullRequest
0 голосов
/ 20 декабря 2018

Я могу получить старое значение.Но у меня нет решения получить новое введенное значение.

На самом деле , я хочу отделить старое значение от нового значения.Например: если oldText=hello и новое введенное значение EditText равно (hello w или w hello), я хочу newText=w.

public class MyTextWatcher implements TextWatcher {


    private String oldText = "";
    private String newText = "";

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        this.oldText = s.toString();
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {

    }

}

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

С помощью параметров start и count в методе onTextChanged можно вычислить и получить новое введенное значение.

onTextChanged

Этот метод вызывается, чтобы уведомить вас, что в s символы count, начинающиеся с start, только что заменили старый текст длиной before.Ошибка при попытке внести изменения в s из этого обратного вызова.

Таким образом, вы можете:

public class MyTextWatcher implements TextWatcher {

    private String newTypedString = "";

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        newTypedString = s.subSequence(start, start + count).toString().trim();
    }

    @Override
    public void afterTextChanged(Editable s) {

    }

}
0 голосов
/ 20 декабря 2018

Попробуйте этот код:

public class MyTextWatcher implements TextWatcher {


    private String oldText = "";
    private String newText = "";

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        this.oldText = s.toString();
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        newText = s.toString().replace(oldText, "").trim();
    }

    @Override
    public void afterTextChanged(Editable s) {

    }

}

Информация о наблюдателе текста: Различия между onTextChanged TextWatcher, beforeTextChanged и afterTextChanged

...