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

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

系列文章目录

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

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

Demo效果图如下:
1.gif

一、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增删改查语句(外部数据库)

相关文章
|
2月前
|
Android开发 开发者
Android动态搜索的简单实现
本文介绍了在Android中实现动态搜索功能的方法,重点讲解了通过`SearchView`与`ListView`结合的方式。文章首先简要提及了`addTextChangedListener`的使用场景,随后详细说明了`SearchView`的相关方法,如`setIconified()`、`setOnQueryTextListener()`等,并通过一个示例展示了如何根据用户输入动态过滤`ListView`中的数据。案例中使用了一个字符串数组作为数据源,通过监听输入变化实现搜索功能。最后提供了完整的源码和布局文件,便于开发者参考和实践。
|
2月前
|
Java API Android开发
Android实现EditText的抖动效果
本文介绍Android开发中的**samples**资源,适合初学者学习。文中的动画效果源自samples(如API Demos展示)。通过调用`AnimationUtils.loadAnimation`实现摇晃动画,核心代码包括Java文件调用、shake.xml定义水平位移及cycle_7.xml设置循环次数。欢迎留言交流!
|
2月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
Android常用的room增删改查语句(外部数据库)
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
173 2
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
453 2
|
XML Java Android开发
14. 【Android教程】文本输入框 EditText
14. 【Android教程】文本输入框 EditText
1126 2
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
118 2
|
Android开发
Android通讯录开发之通讯录联系人搜索功能最新实现
Android通讯录开发之通讯录联系人搜索功能最新实现
|
2天前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
32 11

热门文章

最新文章