首页 > 解决方案 > 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 个书签,但它只显示其中 1 个。我已经对其进行了调试并验证了 holder.imgBookmark.setVisibility(View.VISIBLE) 已被调用 3 次。如何正确更新图像?

标签: androidandroid-recyclerviewimageview

解决方案


当字母和条目匹配时,我忘记了休息。因此,只有最后一场比赛才会显示图标。

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);
        }
    }
}

推荐阅读