`
zhuqiang5138
  • 浏览: 31930 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

android 联系人快速搜索

阅读更多
先来分析下 如果是搜索联系人 大概有多少种条件:
  1、按姓名
  2、按号码
  3、按拼音简拼
  4、按拼音全拼
  5、按拨号盘[也就是上面的都有可能]

如果还有别的搜索策略 也可以很快的扩展的吧。

姓名、号码、全拼和简拼都在联系人表中都是可以分析出来的。
分别是display_name、number、sort_key或者sort_key_alt。
那么 就可以使用sql语句来查询了。
这里只有全拼和简拼是需要转换下,代码如下:

sort_key字段是形如:“ZHU 朱 QIANG 强”,对其解析得到需要的全拼和简拼字符串即可。

public class AnalyticString {
	/**
	 * 字符串解析为字符串数组
	 * @param str
	 * @return
	 */
	public String[] getStrings(String str)
	{
		return str.split(" ");
	}
	
	/***
	 * 是否为字母
	 * @param str
	 * @return
	 */
	public boolean getLetter(String str)
	{
		return str.matches("^[A-Za-z]+$");
	}
	
	/**
	 * 得到全拼或简拼
	 * @param strs 字符串数组
	 * @param type 全拼还是简拼
	 * @return
	 */
	public String getString(String[] strs,int type)
	{
		String[] newStrs = new String[strs.length];
		int j = 0;
		for(int i=0;i<strs.length;i++)
		{
			String firstLetter = strs[i].substring(0,1);
			if(getLetter(firstLetter))
			{
				//type=0 out jp
				if(type==0)
				{
					newStrs[j] = firstLetter;
				}
				//type=1 out qp
				else
				{
					newStrs[j] = strs[i];
				}
				j++;
			}
		}
		StringBuffer sb = new StringBuffer();
		for(int k = 0; k < newStrs.length; k++){
			if(newStrs[k] != null)
			{
				sb.append(newStrs[k]);
			}
		}
		return sb.toString();
	}
	
	public static void main(String [] args)
	{
		AnalyticString as = new AnalyticString();
		System.out.println(as.getString(as.getStrings("ZHU 朱 QIANG 强"),1));
	}
}


上面的代码的结果就是:ZHUQIANG

这里先分离出全拼和简拼,具体的做法如下:
ContentResolver contentResolver;
String projection[] = {Phone.CONTACT_ID,Phone.DISPLAY_NAME,Phone.NUMBER,"sort_key"};
Cursor cursor =  contentResolver.query(Phone.CONTENT_URI, projection, getCondition(str), null, "sort_key COLLATE LOCALIZED asc");
//下面是把cursor中的数据一一的读入一个List中去,其中包括全拼和简拼字段,条件变更就基于第一遍的集合过滤。
public static String getCondition(String value)
	{
		String string = null;
		if ("".equals(value) && null==value) 
		{
			return string;
		}
		else
		{
			string = "display_name like '%"+ value +"%' or data1 like '%"+ value +"%' or sort_key like '%"+ value +"%'";
			return string;
		}
	} 
分享到:
评论

相关推荐

    android slideBar 通过侧边栏快速搜索联系人

    通过以上步骤,我们可以实现一个高效的Android SlideBar,让用户能够通过侧边栏快速搜索联系人,提高应用的可用性和便捷性。这种设计不仅简化了用户界面,还提供了强大的功能,是Android应用中常用的交互模式。

    Android 联系人快速索引源码.zip

    在Android开发中,联系人快速索引是一项常用功能,它能帮助用户快速定位到所需的联系人,提升用户体验。"Android 联系人快速索引源码.zip"这个压缩包包含了一个实现这一功能的源代码示例。接下来,我们将详细讨论这...

    Android 联系人 字母快速定位

    在Android开发中,联系人应用是用户日常使用的重要部分,为了提供良好的用户体验,通常需要实现一个功能,即字母快速定位,让使用者能迅速找到所需的联系人。标题中的“Android 联系人 字母快速定位”就是指这个功能...

    android联系人搜索框

    在Android开发中,实现“android联系人搜索框”是一项常见的需求,它允许用户通过输入关键词快速查找联系人信息。这个功能极大地提升了用户体验,使得在大量联系人数据中找到目标变得高效便捷。以下将详细介绍如何在...

    Android-仿微信通讯录的实现联系人按字母分组显示右侧添加快速索引条

    总的来说,实现“Android-仿微信通讯录的实现联系人按字母分组显示右侧添加快速索引条”涉及到Android界面设计、数据结构、排序算法以及事件监听等多个知识点,是一个综合性的开发任务。通过这样的实践,开发者可以...

    Android ListView快速筛选联系人

    本主题“Android ListView快速筛选联系人”主要涉及如何利用ListView实现高效的联系人筛选功能,同时结合搜索输入框进行实时匹配。下面将详细讲解这个过程。 首先,我们需要一个包含联系人信息的数据模型。通常,每...

    Android@联系人功能

    6. **优化用户体验**:为了提升用户体验,可以添加搜索功能,让用户能快速找到特定联系人。还可以考虑缓存最近被@的联系人,方便快速再次选择。 在提供的`atsample-debug.apk`和`atsample`文件中,很可能是包含了...

    Android联系人快速索引源码.zip

    本压缩包“Android联系人快速索引源码.zip”显然包含了实现这一功能的源代码。现在我们将详细探讨这一技术。 1. **快速索引的基本概念**: 快速索引是指在大量数据中提供一种直观、高效的搜索方式,通过字母表导航...

    Android手机通讯录 快速筛选联系人

    在Android开发中,创建一个能够快速筛选联系人的手机通讯录是一项常见的需求。本文将深入探讨如何利用ListView组件,实现A-Z字母排序、过滤搜索以及汉字转拼音的功能,并介绍如何获取设备上的通讯录联系人和他们的...

    android 通讯录(A-Z)带可模糊查询搜索框

    在这个案例中,我们用到了一个名为`SortListView`的自定义`ListView`,它可能包含了一个特殊的头部,这个头部可以显示A到Z的字母,用户可以通过点击这些字母快速跳转到对应的联系人列表部分。此外,每个`ListView`项...

    安卓A-Z字母排序索引相关-仿Android联系人SideBar排序根据拼音A-Z字母快速导航联系人姓名以及输入搜索条件过滤显示姓名的文字图片添加挤压动画.rar

    仿Android联系人SideBar排序,根据拼音A-Z字母快速导航联系人姓名,以及输入搜索条件过滤,显示姓名的文字图片,添加挤压动画.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android 联系人快速索引源码-IT计算机-毕业设计.zip

    这份"Android 联系人快速索引源码"是专为学习和毕业设计而准备的示例项目,它可以帮助开发者深入理解Android系统中如何高效地管理和搜索联系人数据。 1. **Android 源码解析**: - Android应用由Java或Kotlin编写...

    android:微信联系人效果

    提供搜索框是必不可少的,用户可以通过输入关键词快速查找联系人。实现搜索功能,可以监听EditText的文本变化事件,然后过滤并更新RecyclerView的数据源。搜索结果应该即时反馈给用户,可以考虑使用AsyncTask或...

    Android源码——联系人快速索引源码.zip

    这个“Android源码——联系人快速索引源码.zip”包含的资源,很可能是用于解释如何实现Android联系人应用中的快速索引功能。下面将深入探讨这一关键知识点。 快速索引功能在Android联系人应用中表现为字母栏,用户...

    Android高级应用源码-仿qq通讯录联系人.zip

    6. **搜索功能**:应用可能包含实时搜索功能,让用户快速查找联系人。这涉及到对输入的监听,过滤数据,以及更新UI显示。学习如何使用SearchView和Filter机制是关键。 7. **图片加载库**:225738ql595u33dsiila9a....

    Android实现通讯录(带有拼音首字母排序的和过滤搜索

    最后,过滤搜索功能是让用户能快速找到特定的联系人。在输入框中输入文字时,实时更新ListView的数据源,只显示包含输入文字的联系人。这可以通过监听EditText的TextWatcher事件来实现: ```java searchEditText....

    Android代码-仿qq通讯录联系人.rar

    开发者可能通过这个项目学习如何在Android平台上构建一个功能完善的通讯录应用,包括但不限于联系人数据的获取、排序、搜索和展示等关键功能。 【标签】"android" 指出这与Android平台的编程密切相关,意味着使用的...

Global site tag (gtag.js) - Google Analytics