【问题标题】:RecyclerView different itemDecoration for different itemsRecyclerView不同的item为不同的item装饰
【发布时间】:2015-02-07 09:36:00
【问题描述】:

我在我的应用程序中使用RecyclerView 并且为了我的设计需要,我需要在我的列表中的项目之间有不同的边距(例如:前两个项目之间的间距为 16dp,间距在第二项和第三项之间 32dp 等)。我读到您可以将项目装饰添加到 RecyclerView 并在项目之间创建该空间。但是这个东西在所有项目之间增加了相同的边距,我希望不同项目有不同的行为。我的问题是,这可以使用物品装饰来完成吗?这种方法比更改项目(视图)的边距如何更好,例如RecyclerView.Adapter 中的onBindViewHolder 方法。提前谢谢!

【问题讨论】:

  • 您是否尝试覆盖 ItemDecoration.getItemOffsets?
  • 是的,但是如何为不同的项目添加不同的边距?我应该以某种方式迭代这些项目吗?
  • 是调用一次还是多次?如果后者看到传递的参数
  • 多次调用,参数为(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)..
  • 所以您在每次通话中都有不同的视图视图,对吧?那么究竟是什么问题呢?

标签: android margins android-recyclerview


【解决方案1】:

您可以覆盖RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state),它会为每个可见的子View view 调用,您可以通过调用获取其在适配器中的位置:

parent.getChildAdapterPosition(view)

或视图持有者通过调用:

parent.getChildViewHolder(view)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2012-05-29
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多