我在我的应用程序中使用RecyclerView
并且为了我的设计需要,我需要在列表中的项目之间有不同的边距(例如:前两个项目之间的空间为16dp,第二和第三项32dp之间的空间等。我读到您可以将项目装饰添加到RecyclerView
并在项目之间创建该空间。但是这个东西在所有项目之间增加了相同的余量,我希望不同的项目有不同的行为。我的问题是,可以使用项目装饰来完成吗?这种方法如何比改变项目(视图)的边距更好,例如onBindViewHolder
中的RecyclerView.Adapter
方法。提前谢谢!
答案 0 :(得分:37)
你可以覆盖RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)
,为每个可见的孩子View view
调用它,你可以通过调用它来获得它在适配器中的位置:
parent.getChildAdapterPosition(view)
或视图持有人致电:
parent.getChildViewHolder(view)