Android RecyclerView setVisibility不能正常工作



我有一个包含用户书签的RecyclerView。计划是书签项目将标有一定的图标。这是我在onBindViewHolder()中的代码:

// ...
if (bookmarks != null) {
for (BookmarkModel bookmarkData : bookmarks) {
if (bookmarkData.getLetterId() == letter && bookmarkData.getEntryId() == entry) {
holder.imgBookmark.setVisibility(View.VISIBLE);
} else {
holder.imgBookmark.setVisibility(View.INVISIBLE);
}
}
}

然而,RecyclerView并没有显示所有的书签图标,只有其中的一些。目前我有3个书签,但它只显示其中一个。我已经调试并验证了holder.imgBookmark.setVisibility(View.VISIBLE)被调用了3次。如何正确更新图像?

我忘了在字母和条目匹配的时候加上break。因此,只有最后一个匹配项才会显示图标。

if (bookmarks != null) {
for (BookmarkModel bookmarkData : bookmarks) {
if (bookmarkData.getLetterId() == letter && bookmarkData.getEntryId() == entry) {
holder.imgBookmark.setVisibility(View.VISIBLE);
break;
} else {
holder.imgBookmark.setVisibility(View.INVISIBLE);
}
}
}

最新更新