Android - ArrayList.contains 无法正常工作

Android - ArrayList.contains do not work properly

有一个 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" 对象不存在于该数组列表中。"caption" 字符串值"label" 的完全不同! 我做错了什么?

mStartCallLabels.size == 3,并且 mNeedToRemoveLabels.size == 0。

所以基本上,出于某种原因,

mStartCallLabels.contains(label)

returns 是的..不应该!有什么想法吗?

Label,据我了解,是你的class。当您在 ArrayList 上调用 contains 时,它实际上会在将您的对象与列表中的对象进行比较时调用 equals。请确保这些标签的 equals 方法 returns 为 false。