You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确隐藏RecyclerView中name为指定值的CardLayout条目?

问题原因

你遇到的异常是RecyclerView的条目复用机制导致的:你只给满足隐藏条件的条目设置了View.GONE,没有给不满足条件的条目显式设置View.VISIBLE。当条目被复用时,如果之前被设为隐藏状态,就会继续保持GONE,最终出现不满足条件的条目也被误隐藏的情况。

解决方案

方案1:补全可见性判断逻辑

在Adapter的onBindViewHolder方法中补全else分支,不满足隐藏条件的条目强制设为可见:

if (dealer.getName().equals("abcde")) {
    cardlayout.setVisibility(View.GONE);
} else {
    cardlayout.setVisibility(View.VISIBLE);
}

注意:该方案只是修复显示异常,隐藏的条目仍然会占用列表的布局位置,可能出现空白间隙,体验不佳。

方案2(更推荐):过滤数据源

直接把不需要展示的条目从传给Adapter的数据源中移除,不需要操作View的可见性,从根源避免复用问题,也不会出现空白间隙:

// 从数据库获取原始数据后先做过滤
List<Dealer> filteredList = new ArrayList<>();
for (Dealer dealer : originalDealerList) {
    if (!dealer.getName().equals("abcde")) {
        filteredList.add(dealer);
    }
}
// 将过滤后的列表传给Adapter并刷新
adapter.setData(filteredList);
adapter.notifyDataSetChanged();

如果需要动态切换是否展示被过滤的条目,保留原始数据源,切换时重新过滤数据源再刷新列表即可。


内容的提问来源于stack exchange,提问作者Heman Kadariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:39:04