Я использую RecyclerView
в своем приложении и для нужд моего проекта, мне нужно иметь разные поля между элементами в моем списке (например: пробел между первыми двумя элементами будет 16dp, пространство между вторым и третьим элементами 32dp и т.д.). Я прочитал, что вы можете добавить украшение элемента в RecyclerView
и создать это пространство между элементами. Но эта вещь добавляет одинаковый запас между всеми элементами, и я хочу различного поведения для разных предметов. Мои вопросы: можно ли это сделать, используя украшение элемента? И как этот подход лучше, чем изменение поля элемента (вида), например, метода onBindViewHolder
в RecyclerView.Adapter
. Заранее благодарю вас!
RecyclerView различные itemDecoration для разных предметов
Ответ 1
Вы можете переопределить RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)
, он вызывается для каждого видимого дочернего View view
, вы можете получить свою позицию в адаптере, вызвав
parent.getChildAdapterPosition(view)
или держатель вида, вызвав:
parent.getChildViewHolder(view)