笔记72 | 将姓放在名的后面,排序按姓氏排列的修改笔记

需求

更改之前

更改之后
这里写图片描述
只看“ 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();
        }

修改之后的代码(其中只修改了filledDataswitch_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();
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值