EditText的TextWatcher监听事件延迟处理

博客介绍了在使用EditText作为搜索框时,如何通过TextWatcher监听文本变化并实现延迟处理,以避免每次字符更改就执行查询逻辑。建议使用imeOptions属性结合inputType设置,让用户通过搜索或完成按钮触发后续操作,以优化用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中会碰到使用EditText作为搜索框的时监听TextWatsher事件能让我们实时拿到EditText中的内容,但是TextWatsher给我们的三个接口

 @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
            public void afterTextChanged(Editable s) {

                edit_text = s.toString;
 
                if (mHandler.hasMessages(3)) {
                    mHandler.removeMessages(3);
                }
                mHandler.sendEmptyMessageDelayed(3, 1000);
            }

另外,如果不需要对每次输入的东西都进行监听的话可以设置键盘的样式,让用户点击搜索按键或者点击完成按键然后在进行后续操作,这样的话需要在布局文件中添加EditText的属性:

android:imeOptions="actionSearch"   android:inputType="text"  或者:

android:imeOptions="actionDone"   android:inputType="text" 然后监听EditText的事件

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
       if (actionId == EditorInfo.IME_ACTION_SEARCH){//搜索按键action{
        
         ​​​​​​​}

        return false;
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值