Предисловие переводчика: Оригинальная статья содержит GIF-анимации с демонстрацией работы кода (т. е. результат). К сожалению, мне не удалось вставить их в статью, т. к. я использовал новый редактор от Хабра, а он очень криво работает с изображениями :) Для просмотра анимаций, вы можете перейти к оригинальной статье Как-то раз мне нужно было создать собственный ItemDecoration, и я обнаружил, что в Интернете. почти нет ответов на этот вопрос. Надеюсь, что эта статья будет кому-нибудь полезна.  Простой ItemDecoration Кастомный ItemDecoration ItemDecoration основанный на позиции ItemDecoration без отрисовки после последнего списка ItemDecoration основанный на типе View Основной вариант использования может быть реализован с помощью DividerItemDecoration предоставляемый Android-ом. Создает разделитель RecyclerView.ItemDecoration который можно использовать с LinearLayoutManager.  @param context  будет использоваться для доступа к ресурсам. @param orientation  должен быть #HORIZONTAL или #VERTICAL. Что вам нужно, так это установить правильную ориентацию, а затем предоставить drawable-ресурс, используемый для разделения каждого элемента.  Преимущества 4 строчки кода Предоставляется самим Android Прост в использовании Недостатки Как было упомянуто: ограниченные варианты использования - в качестве разделителя пустым пространством или линией. Ограничение при использовании и "бесконечной" прокруткой (или пагинацией): декоратор будет отрисован для каждого элемента, в том числе и последнего. В большинстве случаев мы этого не хотим.  Для лучшего контроля и более сложных вещей мы расширим RecyclerView.ItemDecoration.  Нам доступны 3 метода: getItemOffsets используется для определения расстояния между элементами. onDraw используется для отрисовки в пространстве между элементами. onDrawOver то же, что и onDraw, только вызывается после того, как сам элемент отрисован. ? Cм. официальную документацию: getItemOffsets, onDraw, onDrawOver. ? Обратите внимание, что в примерах используется горизонтальная ориентация, но то же самое можно сделать и с вертикальной. Для начала простой пример: давайте украсим элементы с нечетной позицией в адаптере. Главный метод здесь здесь parent.getChildAdapterPosition (view) Он возвращает позицию переданной View в адаптере. См. полную документацию. ⚠️ Не путать с дочерними позициями родителей (parent.children - это элементы, отображаемые на экране). ⚠️ Не забудьте обработать случай с RecyclerView.NO_POSITION, т. к.getChildAdapterPosition может вернуть -1. Это наиболее распространенный вариант использования на StackOverflow, о котором вы спрашиваете. Это кастомный ItemDecoration, основанный на позиции элемента в адаптере.  Исключим последний элемент, добавив if (childAdapterPosition == adapter.itemCount-1). ⚠️ Нужно помнить, что parent.adapter может быть null. ? Обратите внимание, что в большинстве случаев вам, вероятно, нужен только интервал между вашими элементами (за исключением последнего). Нет необходимости переопределять метод onDraw, достаточно установить правильный размер Rect в методе getItemsOffsets. В этом примере у нас есть 2 типа элементов, показанных черным и серым. Мы оформляем элементы синими и красными Drawable в зависимости от типа View (объявленных в Adapter-е). Главная строчка кода здесь здесь - adapter.getItemViewType(childAdapterPosition). Нам нужно переопределить метод getItemViewType в нашем адаптере. Он возвращает тип View элемента по позиции для повторного использования View. […] Подумайте над тем, чтобы использовать id-ресурсы для уникальной идентификации типов View.  См. официальную документацию getItemViewType. Как только вы сможете определить тип вашего элемента, вы можете установить правильный интервал и украсить его по своему желанию ?. Вы можете найти полный код в моём GitHub репозитории. Android-программист