千家信息网

Android怎么实现简单动态搜索功能

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"Android怎么实现简单动态搜索功能"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2026年10月31日Android怎么实现简单动态搜索功能

本篇内容介绍了"Android怎么实现简单动态搜索功能"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    前言

    提到Android的动态搜索,大多应该会想到EditText的文本改变的监听器(addTextChangedListener),本文会简单介绍一下,但是本文介绍的是SearchView+Listview的实现。

    效果图:

    一、addTextChangedListener

    使用这种方式的思路简述就是,当监听到文本改变时,就用Handler post一个Runnable去做相应的改变,动态修改ListView的显示。

    二、本文案例

    1.介绍一下SearchView的一些方法

    • setIconified():设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框

    • setIconifiedByDefault():设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无X样式点击按钮 有输入内容后有X样式点击按钮 不能关闭搜索框

    • onActionViewExpanded():设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有X样式点击按钮, 不能关闭搜索框

    • setOnQueryTextListener():为 SearchView 中的用户操作设置侦听器。

    • setSubmitButtonEnabled():当查询非空时启用显示提交按钮。

    • setQueryHint():查询提示语句

    2.准备数据

    本案例使用一个String数组

    private final String[] mStrings = Cheeses.sCheeseStrings;

    3.初始化以及填充数据

    mSearchView = (SearchView) findViewById(R.id.search_view);        mListView = (ListView) findViewById(R.id.list_view);        mListView.setAdapter(mAdapter = new ArrayAdapter<>(this,                android.R.layout.simple_list_item_1,                mStrings));        //设置是否可以通过键盘输入的字符来过滤掉不需要的选项,定位到需要的选项。        mListView.setTextFilterEnabled(true);        setupSearchView();
    private void setupSearchView() {        //设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框        //mSearchView.setIconified(false);        //设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框        //mSearchView.setIconifiedByDefault(false);        //设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框        mSearchView.onActionViewExpanded();        //为 SearchView 中的用户操作设置侦听器。        mSearchView.setOnQueryTextListener(this);        //当查询非空时启用显示提交按钮。        mSearchView.setSubmitButtonEnabled(false);        //查询提示语句        mSearchView.setQueryHint(getString(R.string.cheese_hunt_hint));    }

    4.在SearchView中用户输入字符时激发方法里写入简单逻辑

    //用户输入字符时激发该方法public boolean onQueryTextChange(String newText) {        if (TextUtils.isEmpty(newText)) {            mListView.clearTextFilter();        } else {            mListView.setFilterText(newText.toString());        }        return true;    }

    三、源码

    JimengSearchView.java

    public class JimengSearchView extends Activity implements SearchView.OnQueryTextListener {    private SearchView mSearchView;    private ListView mListView;    private ArrayAdapter mAdapter;    private final String[] mStrings = Cheeses.sCheeseStrings;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);        setContentView(R.layout.searchview_filter);        mSearchView = (SearchView) findViewById(R.id.search_view);        mListView = (ListView) findViewById(R.id.list_view);        mListView.setAdapter(mAdapter = new ArrayAdapter<>(this,                android.R.layout.simple_list_item_1,                mStrings));        //设置是否可以通过键盘输入的字符来过滤掉不需要的选项,定位到需要的选项。        mListView.setTextFilterEnabled(true);        setupSearchView();        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView parent, View view, int position, long id) {                String str = (String)((TextView) view).getText();                Toast.makeText(JimengSearchView.this,str,Toast.LENGTH_SHORT).show();            }        });    }    private void setupSearchView() {        //设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框        //mSearchView.setIconified(false);        //设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框        //mSearchView.setIconifiedByDefault(false);        //设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框        mSearchView.onActionViewExpanded();        //为 SearchView 中的用户操作设置侦听器。        mSearchView.setOnQueryTextListener(this);        //当查询非空时启用显示提交按钮。        mSearchView.setSubmitButtonEnabled(false);        //查询提示语句        mSearchView.setQueryHint(getString(R.string.cheese_hunt_hint));    }    //用户输入字符时激发该方法    public boolean onQueryTextChange(String newText) {        if (TextUtils.isEmpty(newText)) {            mListView.clearTextFilter();        } else {            mListView.setFilterText(newText.toString());        }        return true;    }    public boolean onQueryTextSubmit(String query) {        return false;    }}

    布局文件:

            

    strings.xml

    请输入要查询的内容

    Cheeses.java

    public class Cheeses {    public static final String[] sCheeseStrings = {            "Android自定义view之3D正方体","计蒙不吃鱼","Android自定义view之利用drawArc方法实现动态效果","Android 3D效果的实现","OkHttp源码解析",            "Android翻转动画(卡片翻转效果)","Android自定义view之围棋动画","Android自定义view之模仿登录界面文本输入框(华为云APP)",            "Android自定义view之太极图","Android自定义view获取attr中自定义颜色的问题","Android对抗反编译","Android常用的room增删改查语句(外部数据库)",            "Android用Canvas画一个折线图,并加以简单封装","Android用Canvas画一个真正能跑的跑马灯","Android网络小说阅读器的实现",            "Android护眼模式(argb)","Android约束布局ConstraintLayout","Android实现EditText的抖动效果"    };}

    "Android怎么实现简单动态搜索功能"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

    搜索 输入 内容 右侧 放大镜 查询 按钮 用户 动态 字符 效果 方法 语句 侦听器 数据 文本 样式 提示 功能 动画 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网产品 新华互联网科技学院 互联网科技集团 金融科技和互联网金融 湖南洣水互联网科技有限公司扣款 科技与互联网的利与弊 哈尔滨新华互联网科技学院 成都互联网科技公司100强 字节跳动和互联网科技 重庆威客帮互联网科技 成都铂石互联网科技做什么的 彤创互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 翼展科技 首家互联网医院 恒生互联网科技业指数调整周期 山东星卡互联网科技有限公司官网 小米互联网科技园入驻 产业互联网科技服务公司 互联网高科技绘画 六子台科技互联网展会 湖北九亚互联网络科技有限公司 上海致骋互联网科技 福州新华互联网科技学校 知乎 互联网校园科技培训 重庆互联网医院沙龙医盟信息科技 搜狐科技互联网 互联网金融科技名词解释 深圳无忧互联网科技 中国科技和美国互联网 广西泛欧互联网科技有限公司
    0