我遇到了这段代码的问题 - 它不应该在遇到一些时添加重复的字符串。我不明白为什么会崩溃。
Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
NameIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
Temp = people.getString(NameIndex);
myArr.add(Temp.toString());
while (people.moveToNext()) {
NameIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
Name = people.getString(NameIndex);
if((Name.toString()).equals(Temp)) {
}
else {
myArr.add(Name.toString());
Temp = Name.toString();
}
}
答案 0 :(得分:0)
您可以使用ArrayList的内置函数来检查String是否已存在。此外,如果列不存在,则getColumnIndex()返回-1,如果发生这种情况,则不能在getString()的下一行中使用它。您需要的修改很少:
修改后的代码:
while (people.moveToNext()) {
NameIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
//check if we have a valid column index
if (NameIndex != -1) {
Name = people.getString(NameIndex);
if(myArr.contains(Name)) {
// do nothing, as the same String is already in the list
}
else {
myArr.add(Name.toString());
}
}
}
注意:使用小写启动变量名是一种Java约定。