gpt4 book ai didi

android - 如何将数组列表与移动联系人进行比较

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:58 26 4
gpt4 key购买 nike

我有一个数组列表。

1) 我的第一个ArrayList<String> some_num = new ArrayList<String>();其中包含这样的值。

[1111111111, 2222222222] 

现在我正在尝试将其与我的手机联系人进行比较。

  Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER};

Cursor people = getActivity().getContentResolver().query(uri, projection, null, null, null);

int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
int j_count=0;
String number;
people.moveToFirst();
do {

String name = people.getString(indexName);
number = people.getString(indexNumber);
j_count++;


// Do work...
} while (people.moveToNext());




for(int j=0;j<=j_count;j++){

if (some_num.contains(number)){
// do nothing
}
else{
Log.e("num",number);
}
}

我试图从手机电话簿中获取那些不在我的 ArrayList 中的号码。我知道在 for 条件下我必须获取数组的值,但是当我尝试这样做时我没有得到其余的联系方式。

提前致谢

最佳答案

不要使用任何其他循环来比较数字。那你的代码有什么问题?

您正在将您的数组与保存最后一个数字引用的 number 变量进行比较。因此,您只能得到一个结果。

如果您仍想使用您的代码,则创建另一个 arrayList,在其中存储所有数字,如下所示:

ArrayList<String> numberList = new ArrayList<String>();

并在 j++ 之前使用下行添加此列表中的数字;

numberList.add(number);

现在更新您的最后一个迭代器 block ,使其像这样工作:

       for(int j=0;j<numberList.siz();j++){

if (some_num.contains(numberList.get(i)){
// do nothing
}
else{
Log.e("num",numberList.get(i));
}
}

要获取用户的完整详细信息,您可以创建包含用户详细信息的模型类,如下所示:

public class UserDetails{
private String userName;
private String userPhone;
private String userImage;

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getUserPhone() {
return userPhone;
}

public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}

public String getUserImage() {
return userImage;
}

public void setUserImage(String userImage) {
this.userImage = userImage;
}
}

现在你必须在你的 Activity 中使用这个模型来获取和设置用户的详细信息:

ArrayList<UserDetails> mUserDetailList = new ArrayList<UserDetails>();

要获取联系人姓名,请使用以下代码:

  String name   = people.getString(indexName);

现在像这样存储姓名和电话号码:

UserDetails mUserModel = new UserDetails();

mUserModel.setUserPhone(number);
mUserModel.setUserName(name);

mUserDetailList.add(mUserModel);

现在检查号码是否存在:

 for(int j=0;j<mUserDetailList.siz();j++){

if (some_num.contains(mUserDetailList.get(i).getUserPhone()){
// do nothing
}
else{
Log.e("num",numberList.get(i).getUserPhone());
Log.e("name",numberList.get(i).getUserName());
}
}

希望这能解决您的问题。

关于android - 如何将数组列表与移动联系人进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com