How to remove all listeners added with addTextChangedListener

前端 未结 11 1567
谎友^
谎友^ 2020-11-27 16:24

I have a ListView where each row has an EditText control. I want to add a TextChangedListener to each row; one that contains extra dat

11条回答
  •  春和景丽
    2020-11-27 16:53

    I resolved this situation without extend TextView class.

    private ArrayList mEditTextWatcherList = new ArrayList<>();
    private TextWatcher mTextWatcher1;
    private TextWathcer mTextWatcher2;
    
    mTextWathcer1 = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}
    
        @Override
        public void afterTextChanged(Editable s) {}
    };
    
    mTextWathcer2 = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {}
    
        @Override
        public void afterTextChanged(Editable s) {}
    };
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
    
        setListener(mTextWatcher1);
        setListener(mTextWatcher2);
    
        removeListeners();
    }
    
    private setListener(TextWatcher listener) {
        mEditText.addTextChangedListener(listener);
        mEditTextWatcherList.add(listener);
    }
    
    private removeListeners() {
        for (TextWatcher t : mEditTextWatcherList)
            mEditText.removeTextChangedListener(t);
    
        mEditTextWatcherList.clear();
    }
    

提交回复
热议问题