Android-ArrayList.contains无法正常工作
有一个对象的Android-ArrayList.contains无法正常工作,android,arraylist,contains,Android,Arraylist,Contains,有一个对象的ArrayList,我正在检查该列表是否包含if语句中的对象,而该数组不包含该对象。但它仍在if语句中 @Override public void onBindViewHolder(final LabelViewHolder feedListRowHolder, int i) { final Label label = mLabels.get(i); //find the views and bind the data feedListRowHolder.checkBox.set
ArrayList
,我正在检查该列表是否包含if语句中的对象,而该数组不包含该对象。但它仍在if语句中
@Override
public void onBindViewHolder(final LabelViewHolder feedListRowHolder, int i) {
final Label label = mLabels.get(i);
//find the views and bind the data
feedListRowHolder.checkBox.setText(label.getCaption());
if (mStartCallLabels.contains(label) && !mNeedToRemoveLabels.contains(label)) {
feedListRowHolder.checkBox.setChecked(true);
} else if (mNeedToAddLabels.contains(label)) {
feedListRowHolder.checkBox.setChecked(true);
} else {
feedListRowHolder.checkBox.setChecked(false);
}
上面的代码显示了适配器的“getView”,我正在从列表中设置Label对象,
出于某种原因,它进入了第一个if语句中,即带有mStartCallLabels和mNeedToRemoveLabels的语句
下图包含刚刚进入if的DebugMode断点。。您可以看到该数组列表中不存在“label”对象。。“标签”的“标题”字符串值完全不同!
我做错了什么
mStartCallLabels.size==3,mNeedToRemoveLabels.size==0
所以基本上,出于某种原因
mStartCallLabels.contains(label)
返回true。。不应该!知道原因吗
据我所知,标签是你们的班级。当您在
ArrayList
上调用contains
时,在将对象与列表中的对象进行比较时,它实际上调用了equals
。请确保您的equals
方法为这些标签返回false