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。
有一个 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。