Android RecyclerView узнает первый и последний взгляд на ItemDecoration

Вот мой сценарий

Есть ли другой способ доступа к первому и последнему дочернему элементу RecyclerView в ItemDecoration, чтобы в дальнейшем удаление и добавление элементов не было проблемой.

Да. Вы можете достичь того, чего хотите, только используя свой собственный ItemDecoration .

Чтобы получить текущую позицию товара / ребенка:

 int position = parent.getChildAdapterPosition(view); 

Чтобы получить количество предметов / детей:

 int itemCount = state.getItemCount(); 

С помощью этого вы можете добавить пробел для первого и последнего дочерних элементов вашего RecyclerView .


Теперь, изменив код для этого подхода, вы получите:

 @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); //your padding... final int itemPosition = parent.getChildAdapterPosition(view); if (itemPosition == RecyclerView.NO_POSITION) { return; } final int itemCount = state.getItemCount(); /** first position */ if (itemPosition == 0) { outRect.set(padding, padding, 0, padding); } /** last position */ else if (itemCount > 0 && itemPosition == itemCount - 1) { outRect.set(0, padding, padding, padding); } /** positions between first and last */ else { outRect.set(0, padding, 0, padding); } } 

Бонус: если вы хотите дать отладку всем элементам RecyclerView, посмотрите на созданный мной Gist : https://gist.github.com/ryanamaral/93b5bd95412baf85a81a