0

I have one edit text in Adapter , I have attached addTextChangedListener to it and all methods of it called multiple times , My output is like , If i suppose put Home output comes like H Ho Hom Home

Sne
  • 13
  • 7
  • Add you code in order to get help – Maxouille Sep 18 '18 at 10:23
  • You should add your textWatcher in `onCreateViewHolder()` method. – Piyush Sep 18 '18 at 10:24
  • holder.etOther.addTextChangedListener(new TextWatcher() { String ans="";@Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { ans=arrayList.get(finalI1).getAnswer();}@Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Override public void afterTextChanged(Editable editable) { arrayList.get(finalI1).setAnswer(ans+ ""+editable.toString());}}); – Sne Sep 18 '18 at 10:29
  • holder.etOther.addTextChangedListener(new TextWatcher() { String ans="";@Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { ans=arrayList.get(finalI1).getAnswer();}@Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Override public void afterTextChanged(Editable editable) { arrayList.get(finalI1).setAnswer(ans+ ""+editable.toString());}}); – Sne Sep 18 '18 at 10:44

1 Answers1

1

EDIT Using timer to cancel processing while user is typing

You can try to add a Timer to process you text and cancel this processing while the user is typing.

private Timer timer;

myButton.addTextChangedListener(new TextWatcher() {  
    @Override
    public void afterTextChanged(Editable arg0) {
        // user typed: start the timer
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                // do your actual work here
            }
        }, 600); // 600ms delay before the timer executes the „run“ method from TimerTask
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // nothing to do here
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // user is typing: reset already started timer (if existing)
        if (timer != null) {
            timer.cancel();
        }
    }
});

Hope it helps !

Maxouille
  • 2,729
  • 2
  • 19
  • 42
  • I have Implemented afterTextChanged Method – Sne Sep 18 '18 at 10:26
  • holder.etOther.addTextChangedListener(new TextWatcher() { String ans="";@Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { ans=arrayList.get(finalI1).getAnswer();}@Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Override public void afterTextChanged(Editable editable) { arrayList.get(finalI1).setAnswer(ans+ ""+editable.toString());}}); – Sne Sep 18 '18 at 10:32