Как сделать разделитель в recyclerView?

Я хочу разделить items в RecyclerView разделителем как на картинке (серая полоска между контактами), как это сделать?

  <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/recycleViewMain"
        app:layout_constraintTop_toBottomOf="@+id/include">

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Dewerro

Попробуйте добавить

recycleViewMain.addItemDecoration(new DividerItemDecoration(getContext(),
                DividerItemDecoration.VERTICAL));

Для кастомизации:

DividerItemDecoration itemDecorator = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL);
itemDecorator.setDrawable(ContextCompat.getDrawable(getContext(), R.drawable.divider));

Вы можете использовать какой-угодно разделитель, к примеру:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="@color/colorPrimary"/>
    <size android:height="0.5dp"/>
</shape>

Не забудьте добавить в build.gradle:

implementation 'com.android.support:recyclerview-v7:28.0.0'
→ Ссылка
Автор решения: pie

Если прямо как на скриншоте, то правильнее использовать CardView с отступами между элементами.

class MarginItemDecoration(
    private val spaceSize: Int,
    private val spanCount: Int = 1,
    private val orientation: Int = GridLayoutManager.VERTICAL
) : RecyclerView.ItemDecoration() {
    override fun getItemOffsets(
        outRect: Rect,
        view: View,
        parent: RecyclerView,
        state: RecyclerView.State
    ) {
        with(outRect) {
            if (orientation == GridLayoutManager.VERTICAL) {
                if (parent.getChildAdapterPosition(view) < spanCount) top = spaceSize
                if (parent.getChildAdapterPosition(view) % spanCount == 0) left = spaceSize
            } else {
                if (parent.getChildAdapterPosition(view) < spanCount) left = spaceSize
                if (parent.getChildAdapterPosition(view) % spanCount == 0) top = spaceSize
            }

            right = spaceSize
            bottom = spaceSize
        }
    }
}
recyclerView.addItemDecoration(MarginItemDecoration(...))

Код не мой.

→ Ссылка