我的代码显示了联系人列表。这是我在标签式活动中的片段:
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();
}
}
我有两个问题:
如何从中删除重复的数字?
如何将名称和数字分成两个独立的数组?
答案 0 :(得分:0)
我会使用Set或Map并将phNumber作为键。当您迭代以获得联系人时:
HashMap<String, String> phNumberMap = new HashMap<>();
while (c.moveToNext()){
phNumberMap.put(phNumber, contactName);
}
然后再次遍历HashMap以从HashMap创建两个单独的数组。