先来分析下 如果是搜索联系人 大概有多少种条件:
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应用中常用的交互模式。
在Android开发中,联系人快速索引是一项常用功能,它能帮助用户快速定位到所需的联系人,提升用户体验。"Android 联系人快速索引源码.zip"这个压缩包包含了一个实现这一功能的源代码示例。接下来,我们将详细讨论这...
在Android开发中,联系人应用是用户日常使用的重要部分,为了提供良好的用户体验,通常需要实现一个功能,即字母快速定位,让使用者能迅速找到所需的联系人。标题中的“Android 联系人 字母快速定位”就是指这个功能...
在Android开发中,实现“android联系人搜索框”是一项常见的需求,它允许用户通过输入关键词快速查找联系人信息。这个功能极大地提升了用户体验,使得在大量联系人数据中找到目标变得高效便捷。以下将详细介绍如何在...
本主题“Android ListView快速筛选联系人”主要涉及如何利用ListView实现高效的联系人筛选功能,同时结合搜索输入框进行实时匹配。下面将详细讲解这个过程。 首先,我们需要一个包含联系人信息的数据模型。通常,每...
6. **优化用户体验**:为了提升用户体验,可以添加搜索功能,让用户能快速找到特定联系人。还可以考虑缓存最近被@的联系人,方便快速再次选择。 在提供的`atsample-debug.apk`和`atsample`文件中,很可能是包含了...
本压缩包“Android联系人快速索引源码.zip”显然包含了实现这一功能的源代码。现在我们将详细探讨这一技术。 1. **快速索引的基本概念**: 快速索引是指在大量数据中提供一种直观、高效的搜索方式,通过字母表导航...
总的来说,实现“Android-仿微信通讯录的实现联系人按字母分组显示右侧添加快速索引条”涉及到Android界面设计、数据结构、排序算法以及事件监听等多个知识点,是一个综合性的开发任务。通过这样的实践,开发者可以...
在Android开发中,创建一个能够快速筛选联系人的手机通讯录是一项常见的需求。本文将深入探讨如何利用ListView组件,实现A-Z字母排序、过滤搜索以及汉字转拼音的功能,并介绍如何获取设备上的通讯录联系人和他们的...
仿Android联系人SideBar排序,根据拼音A-Z字母快速导航联系人姓名,以及输入搜索条件过滤,显示姓名的文字图片,添加挤压动画.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
这份"Android 联系人快速索引源码"是专为学习和毕业设计而准备的示例项目,它可以帮助开发者深入理解Android系统中如何高效地管理和搜索联系人数据。 1. **Android 源码解析**: - Android应用由Java或Kotlin编写...
提供搜索框是必不可少的,用户可以通过输入关键词快速查找联系人。实现搜索功能,可以监听EditText的文本变化事件,然后过滤并更新RecyclerView的数据源。搜索结果应该即时反馈给用户,可以考虑使用AsyncTask或...
在这个案例中,我们用到了一个名为`SortListView`的自定义`ListView`,它可能包含了一个特殊的头部,这个头部可以显示A到Z的字母,用户可以通过点击这些字母快速跳转到对应的联系人列表部分。此外,每个`ListView`项...
这个“Android源码——联系人快速索引源码.zip”包含的资源,很可能是用于解释如何实现Android联系人应用中的快速索引功能。下面将深入探讨这一关键知识点。 快速索引功能在Android联系人应用中表现为字母栏,用户...
6. **搜索功能**:应用可能包含实时搜索功能,让用户快速查找联系人。这涉及到对输入的监听,过滤数据,以及更新UI显示。学习如何使用SearchView和Filter机制是关键。 7. **图片加载库**:225738ql595u33dsiila9a....
最后,过滤搜索功能是让用户能快速找到特定的联系人。在输入框中输入文字时,实时更新ListView的数据源,只显示包含输入文字的联系人。这可以通过监听EditText的TextWatcher事件来实现: ```java searchEditText....
开发者可能通过这个项目学习如何在Android平台上构建一个功能完善的通讯录应用,包括但不限于联系人数据的获取、排序、搜索和展示等关键功能。 【标签】"android" 指出这与Android平台的编程密切相关,意味着使用的...