Я пытаюсь получить список пользователей Parse, а затем сравнить их с контактами в телефоне пользователей, а затем показать только те контакты, у которых есть номер в бэкэнде Parse, однако код, который у меня есть сейчас, не работает, как я ожидаю, и я считаю, что он имеет какое-то отношение к списку, который возвращает Parse (возможно, мне нужно его преобразовать, потому что я беру весь Object, и мне нужно только одно поле (. номер телефона, который = имя пользователя в моем синтаксическом бэкэнде)
Вот код, чтобы получить список синтаксического:
Показывать только контакты на основе списка номеров телефонов, полученных из анализа
// Get parse users
String [] phoneNumberList = {"DUMMY NUMBER1", "DUMMY NUMBER2"};
ParseQuery<ParseUser> query = ParseUser.getQuery(); {
query.whereContainedIn("username", Arrays.asList(phoneNumberList));
query.findInBackground(new FindCallback<ParseUser>() {
public void done (List<ParseUser> list, ParseException e){
if (e == null) {
mBinderPhoneNumbers = list;
Log.d("TAG", "mBinderPhoneNumbers from onCreate: " + mBinderPhoneNumbers);
addContactsInList();
} else {
// Something went wrong.
Log.e("TAG", "User query error: " + e);
}
}
});
}
Вот код addContactsInList, где я пытаюсь использовать список только контакты нагрузки, которые находятся во внутреннем интерфейсе: Разбор
private void addContactsInList() {
// TODO Auto-generated method stub
Thread thread = new Thread() {
@Override
public void run() {
showPB();
try {
Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, null, null, null);
try {
ContactsListClass.phoneList.clear();
} catch (Exception e) {
}
while (phones.moveToNext()) {
Log.d("TAG", "mBinderPhoneNumbers from AddContactsInList:" + mBinderPhoneNumbers);
if (Arrays.asList(mBinderPhoneNumbers).contains(phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER)))) {
String phoneName = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER));
String phoneImage = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
ContactObject cp = new ContactObject();
cp.setName(phoneName);
cp.setNumber(phoneNumber);
cp.setImage(phoneImage);
ContactsListClass.phoneList.add(cp);
}
}
phones.close();
lv = new ListView(context);
lv.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
llContainer.addView(lv);
}
});
Collections.sort(ContactsListClass.phoneList,
new Comparator<ContactObject>() {
@Override
public int compare(ContactObject lhs,
ContactObject rhs) {
return lhs.getName().compareTo(
rhs.getName());
}
});
objAdapter = new ContactsAdapter(AddContactsActivity.this,
ContactsListClass.phoneList);
lv.setAdapter(objAdapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,
View view, int position, long id) {
CheckBox chk = (CheckBox) view
.findViewById(R.id.contactcheck);
ContactObject bean = ContactsListClass.phoneList
.get(position);
if (bean.isSelected()) {
bean.setSelected(false);
chk.setChecked(false);
} else {
bean.setSelected(true);
chk.setChecked(true);
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
hidePB();
}
};
thread.start();
}