Android使用EditText+Listview实现搜索效果(使用room模糊查询)

举报
计蒙不吃鱼 发表于 2025/06/06 23:24:00 2025/06/06
【摘要】 本文介绍如何在Android中使用EditText与ListView实现搜索功能,并结合Room数据库完成模糊查询。主要内容包括:Room的模糊查询语句(使用`||`代替`+`号)、布局美化(如去除ListView分割线和EditText下划线)、EditText回车事件监听,以及查询逻辑代码示例。此外,还提供了相关扩展文章链接,帮助读者深入了解ListView优化、动态搜索及Room基础操作。

系列文章目录

Android使用EditText+Listview实现搜索效果(使用room模糊查询)

在很久之前发了一篇关于room的增删改查的文章,最近有粉丝问到关于room模糊查询的问题,博主用自己以前写的APP来写一篇相关的文章。

Demo效果图如下:

一、room的模糊查询语句

Room中使用||来代替+号,如下方代码

    //查询某项的全部数据
    @Query("SELECT * FROM 表名 WHERE 某一项 LIKE '%' || :name || '%'")
    List<User> getSubjectForSchool(String name);

二、布局的简单美化

1.Listview去除item间的分割线和滑动的光标

    android:divider="@null"
    android:scrollbars="none"

2.EditText去除下划线并为键盘回车事件设置一些属性

    android:background="@null"
    android:imeOptions="actionSearch"
    android:singleLine="true"
    android:maxLines="1"

三、EditText对应的回车事件获取

       edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(final TextView v, int actionId, KeyEvent event) {
                if(actionId == EditorInfo.IME_ACTION_SEARCH){
                  //进行数据库查询操作
                }
                return false; }
        });

博主的查询操作逻辑代码大概如下

//如果actionId是搜索的id,则进行下一步的操作
                    if (v.getText().toString().trim()==""){ //获取输入的文字
                        //相应操作
                    }else{
                      //本人的rxjva工具类
                        RxJavaUtils.executeAsyncTask(new RxAsyncTask<Object, Object>("") {
                            @Override
                            public Object doInIOThread(Object o) {
                                data = UserDatabase.xxxxxxxx ; //在子线程中进行数据模糊查询,如果数据量过大建议设置懒加载(分页查询)。
                                return null;
                            }

                            @Override
                            public void doInUIThread(Object o) {
                            //刷新适配器
                             myadapter.notifyDataSetChanged();

                            }
                        });
                    }

四、博主相关文章

Listview

ListView的setEmptyView方法
ListView的简单优化

关于动态搜索

Android动态搜索的简单实现

关于room

Android常用的room增删改查语句(外部数据库)

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。