Android - ArrayList.contains无法正常工作

时间:2015-07-15 16:40:10

标签: 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.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 ..它不应该!任何想法的原因?

enter image description here

1 个答案:

答案 0 :(得分:1)

据我所知,

Label是你的班级。当您在contains上致电ArrayList时,在将您的对象与列表中的对象进行比较时,它实际上会调用equals。请确保您的equals方法对这些标签返回false。

相关问题