多edittext监听变化的优化

重写TextWatcher ,根据自己的逻辑来判断:

public class EventBSJAnimalHolder extends BaseViewHolder<EventBSJAnimalBean> {

    private final EditText animalName;
    private final EditText livingNumber, corpseNumber, fecesNumber, footprintNumber;
    private final EditText wojiNumber, scratchNumber, hairNumber, otherNumber;
    private RVBSJAnimalAdapter mRVBSJAnimalAdapter;
    private int position;
    private EventBSJAnimalBean eventBSJAnimalBean;

    public EventBSJAnimalHolder(View itemView) {
        super(itemView);
        animalName = itemView.findViewById(R.id.et_event_animal_name);
        livingNumber = itemView.findViewById(R.id.et_event_animal_living_number);
        corpseNumber = itemView.findViewById(R.id.et_event_animal_corpse_number);
        fecesNumber = itemView.findViewById(R.id.et_event_animal_feces_number);
        footprintNumber = itemView.findViewById(R.id.et_event_animal_footprint_number);
        wojiNumber = itemView.findViewById(R.id.et_event_animal_woji_number);
        scratchNumber = itemView.findViewById(R.id.et_event_animal_scratch_number);
        hairNumber = itemView.findViewById(R.id.et_event_animal_hair_number);
        otherNumber = itemView.findViewById(R.id.et_event_animal_other_number);

        animalName.addTextChangedListener(new MyTextWatcher(animalName));
        livingNumber.addTextChangedListener(new MyTextWatcher(livingNumber));
        corpseNumber.addTextChangedListener(new MyTextWatcher(corpseNumber));
        fecesNumber.addTextChangedListener(new MyTextWatcher(fecesNumber));
        footprintNumber.addTextChangedListener(new MyTextWatcher(footprintNumber));
        wojiNumber.addTextChangedListener(new MyTextWatcher(wojiNumber));
        scratchNumber.addTextChangedListener(new MyTextWatcher(scratchNumber));
        hairNumber.addTextChangedListener(new MyTextWatcher(hairNumber));
        otherNumber.addTextChangedListener(new MyTextWatcher(otherNumber));
    }

    @SuppressLint("SetTextI18n")
    @Override
    public void setUpView(EventBSJAnimalBean model, int position, RecyclerView.Adapter adapter) {
        this.mRVBSJAnimalAdapter = (RVBSJAnimalAdapter) adapter;
        this.position = position;
        this.eventBSJAnimalBean = model;

        if (model.getAnimalName() != null) {
            animalName.setText(model.getAnimalName());
        }
        livingNumber.setText(model.getLivingNumber() + "");
        corpseNumber.setText(model.getCorpseNumber() + "");
        fecesNumber.setText(model.getFecesNumber() + "");
        footprintNumber.setText(model.getFootprint() + "");
        wojiNumber.setText(model.getWojiNumber() + "");
        scratchNumber.setText(model.getScratchNumber() + "");
        hairNumber.setText(model.getHairNumber() + "");
        otherNumber.setText(model.getOtherNumber() + "");

    }

    private class MyTextWatcher implements TextWatcher {
        private EditText editText;
        private String data;

        public MyTextWatcher(EditText editText) {
            this.editText = editText;
        }

        @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) {
            if (delayRun != null) {
                //每次editText有变化的时候,则移除上次发出的延迟线程
                mHandler.removeCallbacks(delayRun);
            }
            data = editText.getText().toString();

            if (editText == animalName) {
                eventBSJAnimalBean.setAnimalName(data);
            } else if (editText == livingNumber) {
                eventBSJAnimalBean.setLivingNumber(Integer.parseInt(data));
            } else if (editText == corpseNumber) {
                eventBSJAnimalBean.setCorpseNumber(Integer.parseInt(data));
            } else if (editText == fecesNumber) {
                eventBSJAnimalBean.setFecesNumber(Integer.parseInt(data));
            } else if (editText == footprintNumber) {
                eventBSJAnimalBean.setFootprint(Integer.parseInt(data));
            } else if (editText == wojiNumber) {
                eventBSJAnimalBean.setWojiNumber(Integer.parseInt(data));
            } else if (editText == scratchNumber) {
                eventBSJAnimalBean.setScratchNumber(Integer.parseInt(data));
            } else if (editText == hairNumber) {
                eventBSJAnimalBean.setHairNumber(Integer.parseInt(data));
            } else if (editText == otherNumber) {
                eventBSJAnimalBean.setOtherNumber(Integer.parseInt(data));
            }

            //延迟800ms,如果不再输入字符,则执行该线程的run方法
            mHandler.postDelayed(delayRun, 800);
        }

    }

    /**
     * 延迟线程,看是否还有下一个字符输入
     */
    private Runnable delayRun = new Runnable() {

        @Override
        public void run() {
            //在这里调用服务器的接口,获取数据
            mRVBSJAnimalAdapter.setmList(eventBSJAnimalBean, position);
        }
    };

    private Handler mHandler = new Handler();

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值