RecyclerView различные itemDecoration для разных предметов

Я использую RecyclerView в своем приложении и для нужд моего проекта, мне нужно иметь разные поля между элементами в моем списке (например: пространство между первыми двумя элементами, которое должно быть 16dp, пространство между вторым и Третий элемент 32dp и т. Д.). Я прочитал, что вы можете добавить украшение элементов в RecyclerView и создать это пространство между элементами. Но эта вещь добавляет разницу между всеми элементами, и я хочу различное поведение для разных элементов. Мои вопросы: можно ли это сделать, используя украшение элемента? И как этот подход лучше, чем изменение поля элемента (вида), например, метода onBindViewHolder в RecyclerView.Adapter . Заранее спасибо!

Solutions Collecting From Web of "RecyclerView различные itemDecoration для разных предметов"

Вы можете переопределить RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) , он вызывается для каждого видимого дочернего View view , вы можете получить свою позицию внутри адаптера, вызвав:

 parent.getChildAdapterPosition(view) 

Или держателем вида, позвонив:

 parent.getChildViewHolder(view)