【问题标题】:Displaying ItemDecoration when there is nothing in the recyclerview当recyclerview中没有任何内容时显示ItemDecoration
【发布时间】: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”将不会显示。

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    简短回答:不。装饰品是物品上的装饰品。没有物品就没有装饰。

    那你能做什么?

    正如您已经提到的,一个可能的解决方案是向 recyclerView 添加一个空视图类型。这将是一个相当简单的解决方案,您甚至可以设置整个空白页面的样式。但是,您需要修改您的适配器代码,添加一些 if 和 else,它实际上是不可重用的。

    第二种可能性,如果你有一个像“Activity Feed”这样的标题,那就这样做吧:

    <LinearLayout orientation="vertical">
      <TextView text="Header/>
      <RecyclerView height="match_parent"/>
    </LinearLayout>
    

    然后,recyclerview 将始终将该标题放在顶部。您链接的那些粘性装饰是为了显示更改的组标题,我不明白您为什么需要它。

    第三,如果这些不是你想要的,最后可能的解决方案是扩展 RecyclerView 并自己添加一些空状态管理。如果为空,则显示空视图。例如喜欢HERE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2017-09-25
      相关资源
      最近更新 更多