Android自定义搜索框(EditText)的搜索功能实现,过滤ListView

2023-05-16

实现自定义搜索框(实际上就是一个EditText):

<RelativeLayout
        android:id="@+id/music_search_rl"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_margin="5dp"
        android:background="@drawable/acm_inputbox"
        android:focusableInTouchMode="true" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:drawableLeft="@drawable/icon_search"
            android:includeFontPadding="false"
            android:text="@string/search"
            android:textColor="#DFDFDF" />

        <EditText
            android:id="@+id/music_search_et"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"
            android:hint="@null"
            android:singleLine="true" />
    </RelativeLayout>

    <ListView
        android:id="@+id/search_lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

acm_inputbox图片:

icon_search图片:

在相应的Activity类Java代码中,加入如下的功能代码:

//list.setTextFilterEnabled(true);
		
		search_et = (EditText)findViewById(R.id.music_search_et);
		search_et.addTextChangedListener(new TextWatcher() {
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				// TODO Auto-generated method stub
				String aa = s.toString();
				Pattern p = Pattern.compile(aa);
				
				
				//创建一个List集合,List集合的元素是Map
				List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
				for(int i = 0; i < pmiList.size(); i++) {
					PhoneMusicInfo pmi = pmiList.get(i);
					String pmiTitle = pmi.getTitle();
					Matcher matcher = p.matcher(pmiTitle);
					
					if(matcher.find()) {
						Map<String, Object> listItem = new HashMap<String, Object>();
						listItem.put("musicTitle", pmi.getTitle());
						listItems.add(listItem);						
					}
				}
				
				//创建一个SimpleAdapter,设置新的Adapter,替换原来的Adapter
				SimpleAdapter simpleAdapter = new SimpleAdapter(SelectMusic.this, listItems, R.layout.music_item,
						new String[] {"musicTitle"}, new int[] {R.id.music_item_tv});
				
				list.setAdapter(simpleAdapter);
				
				/*if(TextUtils.isEmpty(s))
					list.clearTextFilter();
				else
					list.setFilterText(s.toString());*/
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void afterTextChanged(Editable s) {
				// TODO Auto-generated method stub
				
			}
		});

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android自定义搜索框(EditText)的搜索功能实现,过滤ListView 的相关文章

随机推荐

  • https网页加载http资源时不显示图片,报错解决方案

    https网页加载http资源时不显示图片 xff0c 报错解决方案 自动将http的不安全请求升级为https静态文件放置本地反向代理请求http资源 加载http资源时会报错 xff1a 自动将http的不安全请求升级为https 页面
  • 数独游戏

    数独游戏 题目 九宫格是在81个格子 9 9 中 xff0c 要满足以下条件 xff1a xff08 1 xff09 每个横行和竖列中的9个格子都包含数字1 xff5e 9 xff0c 且不重复 xff1b xff08 2 xff09 每个
  • 静态内部类和普通内部类

    两种内部类 Java的内部类有两种 xff0c 一种是静态内部类 xff0c 另一种是普通内部类 xff0c 普通内部类可以获得外部对象的引用 xff0c 所以在普通内部类能够访问外部对象的成员变量 xff0c 也就能够使用外部类的资源 x
  • 迷宫老鼠游戏

    迷宫老鼠游戏 题目 以一个m n的长方阵表示迷宫 xff0c 0 和 1 分别表示迷宫中的通路和障碍 请设计一个算法 xff0c 对任意设定的迷宫 xff0c 求出一条从入口到出口的通路 xff0c 或得出没有通路的结论 xff1b 如果有
  • java通过JDBC链接SQLServer2012

    下面请一字一句地看 xff0c 一遍就设置成功 xff0c 比你设置几十遍失败 xff0c 费时会少得多 首先 xff0c 在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份
  • 完整java开发中JDBC连接数据库代码和步骤

    转载自 xff1a Hongten JDBC连接数据库 创建一个以JDBC连接数据库的程序 xff0c 包含7 个步骤 xff1a 1 加载JDBC驱动程序 xff1a 在连接数据库之前 xff0c 首先要加载想要连接的数据库的驱动到JVM
  • 浅析网站 APP 登录界面设计

    无论网页或是移动APP的设计 xff0c 很重要的一点是如何能在小而美和功能复杂性之间找到平衡点 本文就移动APP表单设计进行浅析 xff0c 看设计师是如何在设计与交互体验之间做到小而美的平衡 一 极致的减法 这是一个异于常规设计思路而得
  • Android应用开发EditText文本内容变化监听方法

    package com google import android app Activity import android os Bundle import android text Editable import android text
  • Android背景渐变色(shape,gradient)

    转载自 xff1a http l62s iteye com blog 1659433 Android设置背景 色可以通过在res drawable里定义一个xml 如下 xff1a 代码 xml代码 xff1a lt xml version
  • Android 自定义CheckBox 样式

    转载自 xff1a http www open open com lib view open1392187282067 html 有些时候需要根据项目需求自定义CheckBox 的样式 xff0c 步骤如下 xff1a 1 首先在drawa
  • 定制个性化的 Android Checkbox 图标

    首发来自 http blog csdn net garretly 转载注明出处 先大概说一下 这里用到的技术比较简单没有多大的技术含量 关键是大家如何去理解 以及自我更新 好了 这里上代码 在 工程目录下 gt res gt drawabl
  • 解决ssl connect error问题

    curl版本过低 xff0c 升级curl php重新编译 xff0c 指定curl库解决
  • RadioGroup以及RadioButton自定义样式的使用

    转载自 xff1a RadioGroup以及RadioButton自定义样式的使用 RadioButton从字面上就可以很清楚的知道它是单选按钮 xff0c 它与RadioGroup配套时候 通常我们在开发中需要自定义RadioButton
  • 两种方式实现类似qq搜索的切换

    转载自 xff1a 点击打开链接 http www csdn net tag searchview qq的搜索功能在点击搜索框时整个页面上移 xff0c 出现透明布局 该效果是模仿iOS实现的 xff0c 但是在Android也是很容易实现
  • android---xml---include用法(导入另一个XML文件到本布局中)

    转载自 xff1a 点击打开链接 Android在xml文件中可使用include包含其他定义好的布局 xff0c 可以将多处用到的布局单独出来 xff0c 然后用include包含进来 xff0c 这种包含方法相当于把原来布局的一部分代码
  • Android开发技巧之像QQ一样输入文字和表情图像

    转载自 xff1a 点击打开链接 QQ聊天输入框 xff0c 在输入框中可以同时输入文字和表情图像 实际上 xff0c 这种效果在Android SDK中只需要几行代码就可以实现 本文将会介绍如何实现像QQ一样输入表情图像 EditText
  • Android调用相机并将照片存储到sd卡上

    转载自 xff1a 点击打开链接 Android中实现拍照有两种方法 xff0c 一种是调用系统自带的相机 xff0c 然后使用其返回的照片数据 还有一种是自己用Camera类和其他相关类实现相机功能 xff0c 这种方法定制度比较高 xf
  • Android学习长按列表项弹出菜单 给菜单项添加事件 获取上下文

    转载自 xff1a 点击打开链接 这里是先显示一个listview 长按listview的一个列表项 xff0c 弹出一个菜单来 xff0c 菜单有两个条目 xff0c 更新该条 和 删除该条 xff0c 并且这两条都有监听事件 xff0c
  • 通过MediaStore获取Audio信息

    转载自 xff1a 点击打开链接 Android系统提供了MediaScanner xff0c MediaProvider xff0c MediaStore等接口 xff0c 并且提供了一套数据库表格 xff0c 通过Content Pro
  • Android自定义搜索框(EditText)的搜索功能实现,过滤ListView

    实现自定义搜索框 xff08 实际上就是一个EditText xff09 xff1a lt RelativeLayout android id 61 34 64 43 id music search rl 34 android layout