实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

产业园区如何高效对接企业技术需求与高校科研成果?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter。还有一种是利用控件AutoComplete,这种方式只是在输入框的下方重新显示一个列表,显然,很多时候这两种方式也满足不了我们的要求。

在Activity中定义一个类,让它实现TextWatcher接口,然后再onTextChanged方法中去过滤。然后常见相应的Pattern和match,来判断传入的参数时候符合列表中的数据,符合就加入一个新的列表中。

首先贴出实现的效果图

 下面贴出主要实现代码

View Code
 1 package com.example.demo;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import java.util.regex.Matcher;
 6 import java.util.regex.Pattern;
 7 import android.os.Bundle;
 8 import android.app.Activity;
 9 import android.text.Editable;
10 import android.text.TextWatcher;
11 import android.view.Menu;
12 import android.widget.EditText;
13 import android.widget.ListView;
14 
15 public class MainActivity extends Activity {
16     
17     List<People> people = new ArrayList<People>() ;
18     EditText editinput;
19     ListView listview;
20     Adapter adapter;
21     
22 
23     @Override
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_main);
27         editinput = (EditText)findViewById(R.id.edit);
28         listview = (ListView)findViewById(R.id.ydlist);
29         initdata();
30         adapter = new Adapter(getApplicationContext(), people);
31         listview.setAdapter(adapter);
32         editinput.addTextChangedListener(new watcher());
33     }
34     
35      void initdata(){
36         
37         people.add(new People("张三","1374456"));
38         people.add(new People("张三小子", "12444455"));
39         people.add(new People("李一", "1345555"));
40         people.add(new People("王一", "1355555"));
41         people.add(new People("王二", "1365555"));
42         people.add(new People("李三", "13565555"));
43         people.add(new People("李一", "123555"));
44      }
45     
46     class watcher implements TextWatcher{
47 
48         @Override
49         public void afterTextChanged(Editable s) {
50             // TODO Auto-generated method stub
51             
52         }
53 
54         @Override
55         public void beforeTextChanged(CharSequence s, int start, int count,
56                 int after) {
57             // TODO Auto-generated method stub    
58             
59         }
60 
61         @Override
62         public void onTextChanged(CharSequence s, int start, int before,
63                 int count) {
64             // TODO Auto-generated method stub
65             String aa = s.toString();
66             Pattern p = Pattern.compile(aa);
67             List<People> we = new ArrayList<People>();        
68             for(int i=0;i<people.size();i++){
69                 People pp = people.get(i);
70             Matcher matcher = p.matcher(pp.getName()+pp.getPhome());
71             if(matcher.find()){
72                 we.add(pp);
73             }
74             }
75             adapter = new Adapter(getApplicationContext(), we);
76             listview.setAdapter(adapter);
77         }
78         
79     }
80     
81     @Override
82     public boolean onCreateOptionsMenu(Menu menu) {
83         // Inflate the menu; this adds items to the action bar if it is present.
84         getMenuInflater().inflate(R.menu.activity_main, menu);
85         return true;
86     }
87 
88 }


自定义Adapter

View Code
 1 package com.example.demo;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 import android.content.Context;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.BaseAdapter;
10 import android.widget.TextView;
11 
12 public class Adapter extends BaseAdapter  {
13     private List<People> people = new ArrayList<People>();
14     Context ct;
15     private LayoutInflater inflater;
16     public Adapter(Context ct,List<People> people) {
17         // TODO Auto-generated constructor stub
18         this.people = people;
19         this.ct = ct;
20         inflater = (LayoutInflater) ct.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
21     }
22 
23     @Override
24     public int getCount() {
25         // TODO Auto-generated method stub
26         return people.size();
27     }
28 
29     @Override
30     public Object getItem(int position) {
31         // TODO Auto-generated method stub
32         return people.get(position);
33     }
34 
35     @Override
36     public long getItemId(int position) {
37         // TODO Auto-generated method stub
38         return position;
39     }
40 
41     @Override
42     public View getView(int position, View convertView, ViewGroup parent) {
43         // TODO Auto-generated method stub
44         People p = people.get(position);
45         if(convertView==null){
46             convertView = inflater.inflate(R.layout.yd_item, null);
47         }
48         TextView tv1=(TextView)convertView.findViewById(R.id.ydtext1);
49         TextView tv2=(TextView)convertView.findViewById(R.id.ydtext2);
50         tv1.setText(p.getName());
51         tv2.setText(p.getPhome());
52         return convertView;
53     }
54 
55     
56 
57 }

实体类

View Code 

本文转载自http://www.hello-code.com

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

MIT IDSS深度解析:跨学科融合与系统科学实践

麻省理工学院的IDSS(Institute for Data, Systems, and Society, IDSS)是一个致力于通过先进分析方法推动教育与研究的前沿机构。它将工程学、信息科学和数据科学的方法与社会科学的分析方法相结合,以应对复杂的社会挑战。

AllenLV的博客 2086

Android实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter。还有一种是利用控件AutoComplete,这种方式只是在输入框的下方重新显示一个列表,显然,很多时候这两种方式也满足不了我们的要求。 在Activity中定义一个类,让它实现TextWatcher接口...

weixin_30820151的博客 104

HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。 查看master上namenode启动日志,如下: Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdat...

qq_34727158的博客 1764

Android实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter

其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter。还有一种是利用控件AutoComplete,这种方式只是在输入框的下方重新显示一个列表,显然,很多时候这两种方式也满足不了我们的要求。 在Activity中定义一个类,让它实现TextWatcher接口,

917

Spine动画在Unity里卡顿、闪烁、排序错乱?这些性能优化与渲染问题一次讲清

本文深入解析了Spine动画在Unity中常见的卡顿、闪烁和排序错乱问题,提供了全面的性能优化与渲染解决方案。从性能瓶颈诊断到材质合并、动态合批优化,再到层级错乱与Alpha闪烁的处理,帮助开发者提升动画表现和运行效率。特别针对Unity和Spine的协同工作进行了详细的技术探讨。

weixin_29967445的博客 380

Ubuntu 24.04 LTS安装WPS Office 2025冬季版全攻略(附字体缺失解决方案)

本文提供了在Ubuntu 24.04 LTS系统上安装WPS Office 2025冬季版的完整指南,详细对比了dpkg、Snap和GUI三种安装方式的优劣。针对安装后常见的中文字体缺失、思源黑体粗细异常等核心问题,给出了从原理分析到手动补充字体库、修改字体配置文件的深度解决方案,确保WPS Office在Linux环境下获得最佳使用体验。

weixin_29284201的博客 619

转--Android实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter。还有一种是利用控件AutoComplete,这种方式只是在输入框的下方重新显示一个列表,显然,很多时候这两种方式也满足不了我们的要求。 在Activity中定义一个类,让它实现TextWatcher接口...

weixin_30709809的博客 105

CGNS快速入门到实战(一):CGNS静态链接库编译

近期,由于需要将CGNS格式加入到教研组自编CFD求解器DUBHE中,所以本人展开了对于CGNS的学习。CGNS快速入门到实战这一系列分成三篇文章展开叙述,具体有:(一)CGNS静态链接库编译;(二)VS配置调用CGNS静态链接库编写;(三)CGNS文件及案例展示。本篇文章重点讲述CGNS静态链接库编译。

ahang_99的博客 3819

Android开发-UI控件:实现ListView过滤功能,继承于BaseAdapter,非ArrayAdapter。

其实实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能,但是在实际的开发中,一般都是继承于BaseAdapter。还有一种是利用控件AutoComplete,这种方式只是在输入框的下方重新显示一个列表,显然,很多时候这两种方式也满足不了我们的要求。 在Activity中定义一个类,让它实现TextWatcher接口,

重剑无锋,大巧不工 566

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

V-REP(Cooprliesim EDU)自学笔记 实现UR5机械臂末端按轨迹移动

xu_white的博客 7583

SAP Script表单开发中ABAP preform方法的实战应用与调试技巧

本文深入探讨了在SAP Script表单开发中调用ABAP程序(preform方法)的实战应用与调试技巧。通过一个获取供应商版本名称的实例,详细讲解了如何在SE71中嵌入PERFORM指令、编写ABAP子程序进行数据查询与处理,并重点介绍了使用SAP Script Debugger进行高效调试的方法,帮助开发者灵活扩展表单功能,实现复杂业务逻辑。

o0p1q2r3的博客 551

android listview过滤,Android实现ListView过滤功能之继承BaseAdapter进阶版

Android实现ListView过滤功能之继承BaseAdapter进阶版实现ListView过滤功能最方便的便是使用ArrayAdapter,里面自带的getFilter()方法能很方便的实现此功能但是在实际的开发中,ArrayAdapter有的时候满足不了我们项目的各种需求,所以一般都是继承于BaseAdapter,然后继承BaseAdapter不能像ArrayAdapter那样直接通过Li...

weixin_30702441的博客 524

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2172

listview过滤item(基于ArrayAdapter和BaseAdapter)

1.基于ArrayAdapter的过滤ArrayAdapter有个专门的函数用于过滤getFilter,所以只需要运用这个函数就行 private String[] item = { "1", "2", "3", "4", "5" }; editText1 = (EditText) findViewById(R.id.editText1); listVie

lxj1137800599的专栏 2843

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android中SimpleAdapter,ArrayAdapter和BaseAdapter小记

1.SimpleAdapter(很多时候需要继承它,来自定义adapter): simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片-资源文件中有的即有相应的id编号)等。可以显示比较复杂的列表,包括每行显示动态生成的图片、文字等,但不能对列表进行后期加工(在java代码中加工),也是只是单纯的负责显示 public class ImageL

xgxmwang的专栏 946

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android ListView自定义Adapter实战:复用、内存与动态刷新

ListView是Android早期核心列表控件,其Adapter机制虽被RecyclerView取代,但在老旧系统兼容、低资源设备及存量政务/医疗类App中仍具不可替代性。理解Adapter底层原理——尤其是getView复用逻辑、ViewHolder生命周期管理、notifyDataSetChanged线程安全与数据绑定解耦——是保障列表性能与稳定性的技术基石。本文聚焦Custom Adapter工程实践,深入剖析convertView精准复用、静态ViewHolder防内存泄漏、单Item局部刷新等关

weixin_33862993的博客 398

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ListView结合Filter遇到的问题摘记

使用Adapter结合Filter做过滤的时候,在分别继承ArrayAdapter和BaseAdapter时遇到“想修改数据而错误修改了引用”的经典问题。记录遇到的详细情况以免再犯。继承ArrayAdapter:privateclassMyAdapterextendsArrayAdapter<String>{ privateContextm...

weixin_33849942的博客 277

Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解

ListView就是列表组件,一般通过继承ListActivity使用系统提供的ListView. 所有的AdapterView组件都需要有一个对应的Adapter作为适配器来显示列表中元素的布局方式 见思维导图 ArrayAdapter: 数组或集合的适配器。 例: private final String[] mous = {         "郭嘉",

枫轻舞云飘散 6999

ListView解析三

参考http://www.cnblogs.com/angeldevil/archive/2011/11/20/2255972.html 上上篇,我们使用了几次Adapter,如ArrayAdapter、SimpleAdapter;上篇,我们又见识了更多的Adapter,有点晕了,到底什么是Adapter? 一、Adapter的作用 Adapter是AdapterView视图与数据之间的桥梁,

u011372678的专栏 590

Android -- Adapter

体系 public interface Adapter----0层(表示继承体系中的层次)  public interface ExpandableListAdapter---(无所谓层次因为没有其他接口继承实现它) 这是adapter的始祖,其他个性化的adapter均实现它并加入自己的接口。 public interface ListAdapter----1层  public interf...

weixin_34198583的博客 97
上一篇: JavaScript的中对象创建和继承原理
下一篇: IT小兵总结IT人特点及挽留IT人才的九大策略
普通网友
博客等级 码龄14年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值