拥有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断点。你可以看到"标签"对象DOESN' T存在于该数组列表中。"标题"字符串值"标签"完全不同! 我做错了什么?mStartCallLabels.size == 3,mNeedToRemoveLabels.size == 0.
所以基本上,出于某种原因,
mStartCallLabels.contains(label)
返回true ..它不应该!任何想法的原因?
答案 0 :(得分:1)
Label
是你的班级。当您在contains
上致电ArrayList
时,在将您的对象与列表中的对象进行比较时,它实际上会调用equals
。请确保您的equals
方法对这些标签返回false。