版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangyong_1521/article/details/80229214
需求
更改之前
更改之后
只看“ A”皇阿玛 “,在我的电话簿中A”是姓,皇阿玛是名,需求是将名显示在前,姓在后,排列顺序要按姓来排列。
之前是直接修改switch_name_x
的返回字符return record.get(i).getGivenName()+" "+ record.get(i).getFamilyName();
强制完成姓名调换,后来测试组反馈说排序没有按姓氏排,而是按照名的首字母排,赶紧查阅代码,发现之前电话簿是按照“姓+名”的组合字符的首字母进行排列,想想,那么只要在排列的方法中只对姓式的首字母进行排列即可,于是就修改了以下代码就完成需求!
修改之前的主要代码:
private ArrayList<HashMap<String, String>> mPBList;
private List<SortModel> SourceDateList;
HashMap<String, String> map = new HashMap<String, String>();
map.put("item_phonebook_name", getString(R.string.bt_notsupport_download_phonebook));
map.put("item_phonebook_number", "");
mPBList.add(map);
SourceDateList= filledData(mPBList);
Collections.sort(SourceDateList, pinyinComparator);
mAdapter.notifyDataSetChanged();
for (int i = 0; i < record.size(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("item_phonebook_name",switch_name_x(record,i));
map.put("item_phonebook_number", record.get(i).getNumber());
mPBList.add(map);
}
private List<SortModel> filledData(ArrayList<HashMap<String, String>> phoneList){
List<SortModel> mSortList = new ArrayList<SortModel>();
if(phoneList.size()==0)return mSortList;
for(int i=0; i<phoneList.size(); i++){
SortModel sortModel = new SortModel();
sortModel.setName(phoneList.get(i).get("item_phonebook_name").trim());
sortModel.setPhoneName(phoneList.get(i).get("item_phonebook_number").trim());
String pinyin = characterParser.getSelling(phoneList.get(i).get("item_phonebook_name").trim());
if(pinyin==null||pinyin.length()==0)pinyin="unknow";
String sortString = pinyin.substring(0, 1).toUpperCase();
if(sortString.matches("[A-Z]")){
sortModel.setSortLetters(sortString.toUpperCase());
}else{
sortModel.setSortLetters("#");
}
mSortList.add(sortModel);
}
return mSortList;
}
public String switch_name_x(List<PBRecord> record,int i)
{
return record.get(i).getFamilyName() + " " + record.get(i).getGivenName();
}
修改之后的代码(其中只修改了filledData
和switch_name_x
方法):
private List<SortModel> filledData(ArrayList<HashMap<String, String>> phoneList){
List<SortModel> mSortList = new ArrayList<SortModel>();
if(phoneList.size()==0)return mSortList;
for(int i=0; i<phoneList.size(); i++){
SortModel sortModel = new SortModel();
sortModel.setName(phoneList.get(i).get("item_phonebook_name").trim());
sortModel.setPhoneName(phoneList.get(i).get("item_phonebook_number").trim());
String pinyin = characterParser.getSelling(record_test.get(i).getFamilyName()).trim();
if(pinyin==null||pinyin.length()==0)pinyin="unknow";
String sortString = pinyin.substring(0, 1).toUpperCase();
if(sortString.matches("[A-Z]")){
sortModel.setSortLetters(sortString.toUpperCase());
}else{
sortModel.setSortLetters("#");
}
mSortList.add(sortModel);
}
return mSortList;
}
List<PBRecord> record_test = new ArrayList<PBRecord>();
public String switch_name_x(List<PBRecord> record,int i)
{
record_test = record;
return record.get(i).getGivenName()+" "+ record.get(i).getFamilyName();
}
}