Android - 联系人列表(重复的数字)

时间:2017-06-11 22:14:09

标签: java android

我的代码显示了联系人列表。这是我在标签式活动中的片段:

public class Tab2Contact extends Fragment {

    ListView listViewContacts;
    private static final int PERMISSIONS_REQUEST_READ_CONTACTS=100;
    ArrayList contacts;
    Cursor c;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab2_contact, container, false);

        listViewContacts=(ListView)rootView.findViewById(R.id.listViewContacts);
        int permissionCheck= ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS);
        if (permissionCheck== PackageManager.PERMISSION_GRANTED){
            showContacts();
        }else{
            ActivityCompat.requestPermissions(getActivity(),
                    new String[]{Manifest.permission.READ_CONTACTS},
                    PERMISSIONS_REQUEST_READ_CONTACTS);
        }
        ArrayAdapter adapter=new ArrayAdapter(getActivity(),
                android.R.layout.simple_list_item_1,contacts);
        listViewContacts.setAdapter(adapter);

        return rootView;
    }


    private void showContacts(){

        c = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,ContactsContract.Contacts.DISPLAY_NAME+" ASC ");
        contacts=new ArrayList();
        while (c.moveToNext()){
            String contactName=c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phNumber=c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            contacts.add(contactName+"\n"+phNumber);

        }
        c.close();
    }
}

我有两个问题:

  1. 如何从中删除重复的数字?

  2. 如何将名称和数字分成两个独立的数组?

1 个答案:

答案 0 :(得分:0)

我会使用Set或Map并将phNumber作为键。当您迭代以获得联系人时:

HashMap<String, String> phNumberMap = new HashMap<>();
while (c.moveToNext()){
    phNumberMap.put(phNumber, contactName);
}

然后再次遍历HashMap以从HashMap创建两个单独的数组。

相关问题