联系人按照拼音首字母排序
2014-05-28 15:48
791 查看
这几天因为项目需要,要做一个仿小米拨号UI,因为小米拨号盘界面是显示通话记录和所有联系人信息的,在测试的过程中,测试部门反馈拨号盘显示的联系人杂乱没有规律,应该按照拼音首字母排序,问题提出来了以后,我首先想到的是参照联系人界面的拼音字母排序来解决这个问题,但是没有看懂,于是想自己写一个排序的方法,首先通话记录和联系信息都存储在一个数组中, ArrayList<ContactEntity> mTempArrayList=new ArrayList<ContactEntity>(); ContactEntity是一个存储联系人信息的类,包括电话号码,名称,名称首字母等信息,以下就是我写的对mTempArrayList里的联系人进行排序的方法:
public ArrayList<ContactEntity> sortContactByFirstLetter(ArrayList<ContactEntity> contactlist){
ArrayList<ContactEntity> newsortList =new ArrayList<ContactEntity>();
//定义这个数组是为了标识mTempArrayList相应位置的字母所在位置
int[] position= new int[contactlist.size()];
for(int init=0;init<position.length;init++){
position[init]=0;
}
if(contactlist.size()<2){
return contactlist;
}
else{
/**我规定联系人里如果名称是数字,排在最前面,它的标识符为0,a-z标识符依次为1-26 */
for(int i=0;i<contactlist.size();i++){
//getFirstLetter() 为ContactEntity类里的一个方法,联系人拼音全称.charAt(0)就可以得到
switch(contactlist.get(i).getFirstLetter()){
case 'a':
position[i]=1;
break;
case 'b':
position[i]=2;
break;
case 'c':
position[i]=3;
break;
case 'd':
position[i]=4;
break;
case 'e':
position[i]=5;
break;
case 'f':
position[i]=6;
break;
case 'g':
position[i]=7;
break;
case 'h':
position[i]=8;
break;
case 'i':
position[i]=9;
break;
case 'j':
position[i]=10;
break;
case 'k':
position[i]=11;
break;
case 'l':
position[i]=12;
break;
case 'm':
position[i]=13;
break;
case 'n':
position[i]=14;
break;
case 'o':
position[i]=15;
break;
case 'p':
position[i]=16;
break;
case 'q':
position[i]=17;
break;
case 'r':
position[i]=18;
break;
case 's':
position[i]=19;
break;
case 't':
position[i]=20;
break;
case 'u':
position[i]=21;
break;
case 'v':
position[i]=22;
break;
case 'w':
position[i]=23;
break;
case 'x':
position[i]=24;
break;
case 'y':
position[i]=25;
break;
case 'z':
position[i]=26;
break;
default:
position[i]=0;
break;
}
}
//mTempArrayList 数组里的联系人首字符的标识完了以后就可以按照从0—26的顺序一个一个往新的ArrayLlist //添加了
for(int j=0;j<27;j++){
for(int a=0;a<position.length;a++){
if(j==position[a]){
newsortList.add(contactlist.get(a));
}
}
Log.i(TAG,"The newsortList size is "+newsortList.size());
}
return newsortList;
}
}
public ArrayList<ContactEntity> sortContactByFirstLetter(ArrayList<ContactEntity> contactlist){
ArrayList<ContactEntity> newsortList =new ArrayList<ContactEntity>();
//定义这个数组是为了标识mTempArrayList相应位置的字母所在位置
int[] position= new int[contactlist.size()];
for(int init=0;init<position.length;init++){
position[init]=0;
}
if(contactlist.size()<2){
return contactlist;
}
else{
/**我规定联系人里如果名称是数字,排在最前面,它的标识符为0,a-z标识符依次为1-26 */
for(int i=0;i<contactlist.size();i++){
//getFirstLetter() 为ContactEntity类里的一个方法,联系人拼音全称.charAt(0)就可以得到
switch(contactlist.get(i).getFirstLetter()){
case 'a':
position[i]=1;
break;
case 'b':
position[i]=2;
break;
case 'c':
position[i]=3;
break;
case 'd':
position[i]=4;
break;
case 'e':
position[i]=5;
break;
case 'f':
position[i]=6;
break;
case 'g':
position[i]=7;
break;
case 'h':
position[i]=8;
break;
case 'i':
position[i]=9;
break;
case 'j':
position[i]=10;
break;
case 'k':
position[i]=11;
break;
case 'l':
position[i]=12;
break;
case 'm':
position[i]=13;
break;
case 'n':
position[i]=14;
break;
case 'o':
position[i]=15;
break;
case 'p':
position[i]=16;
break;
case 'q':
position[i]=17;
break;
case 'r':
position[i]=18;
break;
case 's':
position[i]=19;
break;
case 't':
position[i]=20;
break;
case 'u':
position[i]=21;
break;
case 'v':
position[i]=22;
break;
case 'w':
position[i]=23;
break;
case 'x':
position[i]=24;
break;
case 'y':
position[i]=25;
break;
case 'z':
position[i]=26;
break;
default:
position[i]=0;
break;
}
}
//mTempArrayList 数组里的联系人首字符的标识完了以后就可以按照从0—26的顺序一个一个往新的ArrayLlist //添加了
for(int j=0;j<27;j++){
for(int a=0;a<position.length;a++){
if(j==position[a]){
newsortList.add(contactlist.get(a));
}
}
Log.i(TAG,"The newsortList size is "+newsortList.size());
}
return newsortList;
}
}
相关文章推荐
- Android按照拼音排序获取联系人并根据拼音首字母获取联系人
- Android联系人按拼音排序以及按汉字首字母或全拼搜索
- sql语句-按照汉字拼音首字母排序
- 仿Android联系人SideBar排序,根据拼音A-Z字母快速导航联系人姓名,以及输入搜索条件过滤,显示姓名的文字图片,添加挤压动画
- MySQL按照汉字拼音首字母排序
- java将汉字转成拼音并按照首字母排序的有效方法。
- Android2.1联系人按照拼音分组排序
- oracle 数据库字段按照拼音首字母排序
- sql语句-按照汉字拼音首字母排序
- IOS开发 汉字转拼音 把用户名按照姓名首字母进行排序
- MySQL按照汉字的拼音排序、按照首字母分类
- Java list 按照 字母 拼音排序 对比大小
- 数据库按照汉字拼音首字母排序
- 将数组按照拼音排序,并按字母排序
- 数组按照拼音首字母排序后转为字符串
- 《android2.2自带通讯录》之联系人按拼音排序以及按汉字首字母或全拼搜索
- 分类按照拼音第一字母排序显示实现
- sql语句按照汉字拼音首字母排序
- 在PHP中,将一个汉字数组按照拼音首字母进行排序
- list之按照中文拼音首字母排序