我有两个ArrayList
。
private ArrayList<Friend> friendsList = new ArrayList<Friend>();
private ArrayList<Friend> myFriendsList = new ArrayList<Friend>();
第一个包含数据库的所有Friend
。第二个仅包含用户Friend
。在我的搜索选项(SearchManager
)中,我ListView
包含friendsList
的搜索朋友。当我选择Friend
ListView
时,我想检查Friend
中是否存在myFriendsList
。我使用了以下代码
friendListView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
handelListItemClick(adapter.getItem(position));
}
});
private void handelListItemClick(Friend friend) {
for(Friend fr: myFriendsList){
Log.v("Check User Name:", fr.getName());
}
if (myFriendsList.contains(friend)) {works with matched friend}
但它无法检查Friend
中的所选myFriendsList
。在LogCat
中,它会显示myFriendsList
个信息。提前谢谢。
更新
这是我的Friend
课程
public class Friend {
private String id, name, thumbnailUrl;
public Friend() {
}
public Friend(String name, String thumbnailUrl) {
this.name = name;
this.thumbnailUrl = thumbnailUrl;
}
public Friend(String name, String thumbnailUrl, String id) {
this.name = name;
this.thumbnailUrl = thumbnailUrl;
this.id = id;
}
public String getID(){
return id;
}
public void setID(String id){
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getThumbnailUrl() {
return thumbnailUrl;
}
public void setThumbnailUrl(String thumbnailUrl) {
this.thumbnailUrl = thumbnailUrl;
}
}
答案 0 :(得分:0)
为了能够使用方法查找和搜索contains
您的自定义类必须正确实现hasCode
和equals
方法。
以下link有关实施hasCode
和here的实施equals
。这是我最喜欢的Java Best Practices网站,也是我从中学到的。
答案 1 :(得分:0)
在大多数集合中使用equals()来确定集合是否包含给定元素
计算此对象的hashCode()并用于确定在哈希表中搜索对象的位置。有关这两个主题的详细信息,请访问oracle webiste或查看here
如果只有他们的id相等,你可以决定两个Friend对象彼此相等。
所以,在你的朋友班中包括
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Friend)) return false;
Friend friend = (Friend) o;
if (!id.equals(friend.id)) return false;
return true;
}
@Override
public int hashCode() {
return id.hashCode();
}
现在就做,
private void handelListItemClick(Friend friend) {
if (myFriendsList.contains(friend)) {works with matched friend}
}
修改强>
您可以查看this教程以了解有关该主题的更多信息