Android: наблюдатель текста onTextChanged и события afterTextChanged, срабатывающие несколько раз.

Я использую наблюдатель за текстом для редактирования текста, и этот текст редактирования находится внутри представления списка. Я должен вызвать метод при редактировании длины текста == 3. Но события наблюдателя за текстом выполняются более одного раза. Вот мой код:

 holder.etTypeKeyword.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                //System.out.println("KEYWORD TYPED : "+s+ " count : "+count);  
                }    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }    
            @Override
            public void afterTextChanged(Editable s) {
                if(s.length()==3){
        //          isServiceCall=true;
                    System.out.println("CALLING COUNT : " + position + " Length "+holder.etTypeKeyword.getText());
                    obKeywordSuggestionInterface.getKeywordUsingChar(s.toString(),position);

                }else{
        //          isServiceCall=false;
                }
            }
        });

Вот мой вывод журнала, где повторяется сообщение count

>I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun
I/System.out: CALLING COUNT : 2 Length 
I/System.out: CALLING COUNT ACT : 2 Length Fun

Пожалуйста, помогите мне в этом, чтобы ограничить многократное выполнение событий текстового наблюдателя. Заранее спасибо.


person Harry    schedule 12.08.2016    source источник
comment
Откуда регистрируется «CALLING COUNT ACT»?   -  person Shaishav    schedule 12.08.2016
comment
Это потому, что он находится в listView или recyclerView. При прокрутке метод будет вызываться для каждого элемента в списке.   -  person Akshay Bhat 'AB'    schedule 12.08.2016
comment
@Шайшав. Это представление списка. Я не прокручиваю. просто ввод символов в тексте редактирования и метод obKeywordSuggestionInterface.getKeywordUsingChar(s.toString(),position);, вызываемый несколько раз.   -  person Harry    schedule 12.08.2016
comment
@Akshay, пожалуйста, посмотрите эту ссылку, которая имеет ту же проблему [stackoverflow.com/questions/33375484/   -  person Harry    schedule 12.08.2016
comment
Но что вы хотите получить от кода?   -  person Akshay Bhat 'AB'    schedule 12.08.2016


Ответы (1)


Пожалуйста, убедитесь, что вы не устанавливаете текст в edittext внутри obKeywordSuggestionInterface.getKeywordUsingChar

person Ramit    schedule 12.08.2016