`
gryphone
  • 浏览: 433512 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

快熟查找联系人

阅读更多

快熟查找联系人

 

[功能]

比如:想查找 shijintao 的记录 只需输入"shi" 所以以"sh"开头的记录就都出来了 我先输入了一些联系人 如下:

 

 

[思路]

1. EditText + TextWatch 用于跟踪用户输入

2. ListView + BaseAdapter + notifyDataSetChanged() 用于数据显示和刷新

 

 

[代码 步骤]

1. 定义数据结构 用于存放符合条件的联系人

写道
数据结构 选择:
* String[]
- 不行 因为数据不是静态 会不断变化

* List<Map<String,String>>
- 可以 List<>是动态的 支持实时改动
- Map<String,String> 用Key-Value 的原因:支持扩展 也可以不仅显示名字 还可以显示联系人号码 及 其他信息

 

//1. 定义
List<Map<String,String>>


//2. 初始化
match = new ArrayList<Map<String,String>>();

 

 

2. 定义 TextWatcher 用于跟踪输入变化

private TextWatcher watcher = new TextWatcher(){

		@Override
		public void afterTextChanged(Editable s) {		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			updateContacts(s.toString());
		}
    	
    };

 

 

 

3. 定义方法 updateContacts 用于得到符合条件的列表 并 刷新显示

 

Cursor c = getContentResolver().query(People.CONTENT_URI, 
                null, null, null, null);

 

public List<Map<String,String>> queryContactsByCursor(Cursor c,String column,String filter){
    	List<Map<String,String>> result = new ArrayList<Map<String,String>>();
    	int i = c.getColumnIndex(column);
    	for(c.moveToFirst(); ! c.isAfterLast(); c.moveToNext()){
    		column = c.getString(i);
    		
    		if(column.startsWith(filter)){
    		Map<String,String> string = new HashMap<String,String>();
    		string.put(COLUMN_1, column);
    		
    		result.add(string);
    		}
    	}
    	
    	return result;
    }

 

4. ListView 第一次显示所有联系人名单

match = queryContactsByCursor(c,"name","");

 

 

5. 定义 ContactsMatchListAdapter 并绑定数据 List<Map<String,String>> match

 

public class ContactsMatchListAdapter extends BaseAdapter {
    	Activity activity;
    	
    	public ContactsMatchListAdapter(Activity a){
    		activity = a;
    	}
    	
    	
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return match.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return match.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			TextView tv = new TextView(activity);
			tv.setText(match.get(position).get(COLUMN_1));
			
			tv.setHeight(30);
			tv.setGravity(Gravity.CENTER);
			return tv;
		}
    	
    }

 

 

 

5. emulator 运行截图:

* 开始显示所有列表 即 无输入 的显示:

 

 

* 当输入字符"sh" ListView 显示的变化

 

 

done! 

分享到:
评论
5 楼 yehuiyan8002 2015-07-12  
支持中文查询
4 楼 gryphone 2010-01-31  
vieri122 写道
支持中文查询吗

输入法还没开始研究 所以不支持!
3 楼 vieri122 2010-01-30  
支持中文查询吗
2 楼 sunburst 2010-01-29  
不错,写得很好,感谢分享
1 楼 springfield 2010-01-29  
原來android默認不支持查詢呀,這個挺有用的,謝謝樓主分享

相关推荐

    Weixinlinkman

    【标题】"Weixinlinkman" 是一个仿微信联系人的应用功能模块,旨在提供与微信类似的联系人查找体验。在微信应用中,联系人通常按照字母顺序排列,并且用户可以通过点击右侧的字母栏快速跳转到指定字母开头的联系人...

    基于QT个人通讯录管理系统 .doc

    本通讯录管理系统具有很多的优点,如用户可以随时随地对通讯录进行管理,添加、删除、修改联系人的信息,查找联系人信息等等。用户也可以根据需要对通讯录进行分类、分组等操作,方便用户更好地管理通讯录。

    电话号码管理

    4. **用户间交友**:实现查找其他用户、发起好友申请以及分享联系人信息的功能,增强用户间的互动性。 在实现这些功能的过程中,项目组成员分工合作,其中一部分人负责开发联系人管理模块。具体实现方法如下: - *...

    通讯录管理系统

    【通讯录管理系统】是一种专为用户管理和存储联系人信息的实用工具,尤其在人际交往频繁的现代社会中,它极大地简化了查找和管理联系方式的过程。随着计算机技术的发展,人们逐渐依赖电子设备来代替传统的记事本和...

    通讯录程序(自创)(著作权:xihale)

    通过精心设计的算法,实现了快速添加、删除和查找联系人功能。 2. 用户界面:为了方便用户操作,程序可能采用了命令行界面或者图形用户界面(GUI)。命令行界面通常通过键盘输入指令,而GUI则通过鼠标点击进行交互...

    一份成熟的DHT-KAD实现,带测试示例

    节点离开时,它们的联系人需要更新自己的路由表,避免死链。 7. **稳定性**:KAD网络的稳定性依赖于定期的节点刷新和心跳机制,确保路由表的节点活跃且准确。 源码中的`example`部分,可能是提供了一个简单的DHT-...

    糖果浏览器3.370047

    用户可以快速查找、添加或编辑联系人,甚至可能支持同步到其他设备或服务,实现跨平台的联系人管理。 3. **安全与隐私保护**:作为一个现代浏览器,糖果浏览器3.370047必然包含了多种安全措施,如防止恶意软件、...

    11电子通讯录系统介绍

    通讯录信息管理系统是一种创新的计算机应用技术,它将传统的手动联系人管理方式(如名片和手写记录)转变为高效、便捷的电子化管理。这种系统是管理信息系统(MIS)的一个实例,旨在通过计算机技术提升通讯录管理的...

    ContactOrganizer

    这类应用能够存储姓名、电话号码、电子邮件地址、公司信息等多种联系人数据,并提供搜索、分类、排序等功能,以便用户高效地查找和管理联系人。 在CSCI 153这门课程中,"联系组织者"可能是作为编程项目的一部分,让...

    图书馆管理系统需求分析报告(20211121222519).pdf

    硬件接口:由于软件本身较小,除了硬盘以外,基本没有与其他外设联系,不过考虑到可能对存储大量数据的数据库进行备份,可以实现保持与光驱刻录机的接口。 软件接口:这里主要考虑的是软件与操作系统的接口。由于...

    新闻管理系统源码

    随着计算机技术及通信技术的普及,人们有越来越多的机会,访问internet,并从Internet中获取资源,Internet紧密的与人们的生活联系起来。  随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻...

    MyQQ.rar_MYQQ

    2. **联系人管理**:用户可以添加、删除和分组联系人,便于管理和查找聊天对象。 3. **即时消息传递**:软件的核心功能,允许用户发送文本消息、表情、图片、文件等多种类型的信息,并实时接收对方的回复。 4. **...

    eml企业通讯录管理系统经典版 v5.4.4

    该系统不仅提供了基础的通讯录功能,还融入了多种实用特性,使员工可以轻松地获取和使用企业内部联系人的信息。 在核心功能方面,用户管理是其重要组成部分。系统允许管理员轻松添加用户,这包括录入员工的基本信息...

    Java即时通信工具(JICQ)设计文档(PPT)JAVA

    - **联系人管理模块**:存储和查找联系人,显示在线状态,管理好友列表。 - **文件传输模块**:支持文件发送和接收,可能涉及断点续传和文件大小限制。 - **安全性模块**:数据加密、防止骚扰和欺诈,确保通信...

    中图初中地理八上《2第3节 气候与人类活动》word教案 (1).doc

    2. **农作物熟制的分布规律**:在中国,农作物熟制的分布主要受热量条件的影响,由南至北大致为一年三熟、一年二熟、一年一熟。这反映了热量对农作物生长周期的制约,热量充足的地方作物生长速度快,一年内可收获...

    办公自动化管理系统

    7. **通讯录与即时通讯**:集成企业通讯录,方便查找联系人;内置即时通讯工具,支持文字、语音、视频等多种沟通方式,促进部门间、员工间的实时交流。 8. **报表统计**:系统提供各类数据统计和分析功能,如考勤...

    Excel模板旅行社基本情况.zip

    4. **合作伙伴表**:旅行社通常与酒店、航空公司、地接社等众多合作伙伴保持合作,这部分记录了这些合作方的名称、联系人、合作关系等,便于管理和维护业务关系。 5. **财务数据表**:记录旅行社的收入、支出、利润...

    PYSeach.rar

    PYSearch的本地搜索功能适合于处理大量的本地数据,如联系人、笔记、文档等,尤其适用于离线环境或者对数据安全有较高要求的场景。 6. **实现原理**:虽然具体实现细节未在描述中给出,但可以推测PYSearch可能采用...

    OnCall:一个轻量级社交网络应用程序,用于查找您附近有空的朋友(iOS)

    5. **数据库集成**:为了存储和检索用户信息、状态更新和联系人数据,OnCall 可能使用了SQLite或Core Data作为本地数据库,同时也可能借助Firebase等云服务进行远程数据存储。 6. **安全性与隐私**:在处理用户的...

Global site tag (gtag.js) - Google Analytics