千家信息网

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

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,本篇内容介绍了"Android怎么实现简单动态搜索功能"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2025年01月16日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安全错误 数据库的锁怎样保障安全 潍柴雷沃重工软件开发管理岗 深圳二手服务器回收单价 公安部 网络安全 郭 网络安全 三无七边 c语言软件开发平台有哪些 少年网络安全教学 银行网络安全责任书范文 服务器解析的域名突然打不开 2017年网络安全泄密案例 车载网络技术由来 软件开发工作未完成的情况说明 java如何添加数据库代码 软件开发中会遇到哪些问题 兰州回收华为服务器交换机 mc服务器经营理念 融智网络科技互联网孵化基地 查数据库最后几条数据 方舟创世纪2官方服务器 网络安全事件处置措施 内蒙古网络安全技术公司排名 使用ddl语句创建数据库 胜利之日起源服务器 软件开发可以干到多大年纪 智能家居与网络技术 无法在安全服务器上进行游戏 现在流行什么软件开发语言 c读取数据库中文乱码 网络安全是国家安全的新边疆 网络安全的本质是什么( ) 大象数据库如何安装
    0