当recyclerview中没有任何内容时显示ItemDecoration
Posted
技术标签:
【中文标题】当recyclerview中没有任何内容时显示ItemDecoration【英文标题】:Displaying ItemDecoration when there is nothing in the recyclerview 【发布时间】:2015-11-19 18:44:04 【问题描述】:我使用这个 timehop stickyheader 库为我的 recyclerview 创建粘性标题:https://github.com/timehop/sticky-headers-recyclerview
我注意到如果 recyclerview 中没有项目,ItemDecorations 将不会出现。我不认为这特定于我正在使用的库,但它通常适用于在空回收器视图中使用装饰的情况。
有没有办法强制 recyclerview 显示装饰,即使 recyclerview 中没有任何内容?我知道我可以向 recyclerview 添加一个空视图并“强制”显示装饰,但我不想这样做。
这适用于那些用例,例如,您有一个显示活动提要的活动(例如在 Facebook 中,您可以在其中看到谁喜欢您的评论等)并且您想在该回收站视图的顶部放置一个标题将始终保持粘性(例如,标有“活动提要”的标题)。在数据仍在加载应用的情况下,将有一个空的recyclerview,因此标题“Activity Feed”将不会显示。
【问题讨论】:
【参考方案1】:简短回答:不。装饰品是物品上的装饰品。没有物品就没有装饰。
那你能做什么?
正如您已经提到的,一个可能的解决方案是向 recyclerView 添加一个空视图类型。这将是一个相当简单的解决方案,您甚至可以设置整个空白页面的样式。但是,您需要修改您的适配器代码,添加一些 if 和 else,它实际上是不可重用的。
第二种可能性,如果你有一个像“Activity Feed”这样的标题,那就这样做吧:
<LinearLayout orientation="vertical">
<TextView text="Header/>
<RecyclerView />
</LinearLayout>
然后,recyclerview 将始终将该标题放在顶部。您链接的那些粘性装饰是为了显示更改的组标题,我不明白您为什么需要它。
第三,如果这些不是你想要的,最后可能的解决方案是扩展 RecyclerView 并自己添加一些空状态管理。如果为空,则显示空视图。例如喜欢HERE。
【讨论】:
以上是关于当recyclerview中没有任何内容时显示ItemDecoration的主要内容,如果未能解决你的问题,请参考以下文章
当 API 返回空数据时显示警告(Vue.js / Axios)
水平 RecyclerView 中的 VideoView 在滑动时显示墙纸