0

1.TextView监听:

 @Override
    protected void initEvent() {
        mIvBack.setOnClickListener(v -> finish());
        mMarriageStatus.addTextChangedListener(this);    //TextView
        mKinship.addTextChangedListener(this);            //TextView
    }

2.其中一个回调函数:

  @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String s1 = s.toString();
        Log.d(TAG, "1723onTextChanged: " + s1);
        if (!s1.equals("选择")) {
            mNextStep.setBackgroundResource(R.drawable.meet_steps_shape);
        }else{
            mNextStep.setBackgroundResource(R.drawable.dissatisfy_steps_shape);
        }
    }
2019-05-25 提问
1 个回答
1

已采纳

可以先自定义一个类实现 TextWatcher 接口,如下:

class MyTextWatcher implements TextWatcher {

        int mViewId ;

        MyTextWatcher(int viewId) {
            mViewId = viewId ;
        }

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

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            
            if (mViewId == mMarriageStatus.getId()) {
                // TODO
            } else if (mViewId == mKinship.getId()) {
                // TODO
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    }

然后如下添加监听。在自定义的类 MyTextWatcher 里面使用 id 区分不同的 TextView 即可。

@Override
protected void initEvent() {
    mIvBack.setOnClickListener(v -> finish());
    mMarriageStatus.addTextChangedListener(new MyTextWatcher(mMarriageStatus.getId()));
    mKinship.addTextChangedListener(new MyTextWatcher(mKinship.getId()));
}

自定义类里面也可以传入 View ,视你的需求而定。

当然,最好还是每个 TextView 都各自监听自己的,这样就无需判断了。

撰写答案

推广链接