RecyclerView针对不同项目的不同itemDecoration

时间:2014-12-09 13:17:43

标签: android margins android-recyclerview

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

1 个答案:

答案 0 :(得分:37)

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

parent.getChildAdapterPosition(view)

或视图持有人致电:

parent.getChildViewHolder(view)