我只想邀请朋友加入我的应用程序,以便他们也可以使用该应用程序。为此,我得到所有联系人,但问题是联系人正在重复。有些联系人显示2次,有些是3次和4次。我想我应该查询" group by"所以不会显示重复项,但我很困惑在哪里放置该查询。 这是我的代码:
private ArrayList<String> conNames;
private ArrayList<String> conNumbers;
private Cursor crContacts;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.invite);
conNames = new ArrayList<String>();
conNumbers = new ArrayList<String>();
crContacts = ContactHelper.getContactCursor(getContentResolver(), "");
crContacts.moveToFirst();
while (!crContacts.isAfterLast()) {
conNames.add(crContacts.getString(1));
conNumbers.add(crContacts.getString(2));
crContacts.moveToNext();
}
setListAdapter(new MyAdapter(this, android.R.layout.simple_list_item_1,
R.id.tvNameMain, conNames));
}
private class MyAdapter extends ArrayAdapter<String> {
public MyAdapter(Context context, int resource, int textViewResourceId,
ArrayList<String> conNames) {
super(context, resource, textViewResourceId, conNames);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = setList(position, parent);
return row;
}
private View setList(int position, ViewGroup parent) {
LayoutInflater inf = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inf.inflate(R.layout.liststyle, parent, false);
TextView tvName = (TextView) row.findViewById(R.id.tvNameMain);
final TextView tvNumber = (TextView) row.findViewById(R.id.tvNumberMain);
tvName.setText(conNames.get(position));
tvNumber.setText(conNumbers.get(position));
return row;
}
}
指导我做什么,避免重复的联系
答案 0 :(得分:2)
@Arslan Ali
如果您不想在集合中使用重复项,则应考虑使用HashMap
。它不允许重复键,但它允许重复值。因此,您提取contacts name
和number
。号码将始终是唯一的,因此请将号码作为您的钥匙,并将其命名为您的价值。
所以在你的情况下
Map<String, String> hm = new HashMap<String, String>();
while (!crContacts.isAfterLast()) {
hm.put(crContacts.getString(2),crContacts.getString(1));
crContacts.moveToNext();
}
所以这样你永远不会有重复的接触。现在迭代HashMap
然后将您的键值推送到conNumbers
并将值命名为conNames
for (String key : hm.keySet()) {
conNames.add(key);
conNumbers.add(hm.get(key));
}
你得到了独特的Arraylist。