L'erreur est parce que vous dites la RecyclerView attirer votre numéro de décoration 2, sans dire ce qu'il faut dessiner le numéro 1 et 0.
(Il est mis en œuvre en tant que ArrayList de décorations pour dessiner dans l'ordre, et il est en essayant d'insérer votre décoration à l'index 2 dans un ArrayList vide - donc OutOfBounds)
Modifier: Voici un exemple de travail:
Je l'ai testé ce code, et il fonctionne très bien si vous faites ce qui suit changements:
1- Utilisez la version à paramètre unique de la méthode, la version indexée donnera des limites comme expliqué (vous devez commencer l'indexation à partir de 0).
r.addItemDecoration(new SpacesItemDecoration(10));
2- Utilisez la classe ItemDecoration suivante:
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpacesItemDecoration(int space) {
this.space = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.bottom = space;
}
}
Cela vous donnera l'espace que dans le fond (pour cloisons horizontales).
3 - Changer votre mise en page de RecyclerView de telle sorte que la couleur de fond de votre RecyclerView est la couleur que vous voulez que les séparateurs soient:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"> # DIVIDER COLOUR
</android.support.v7.widget.RecyclerView>
4- Modifier votre mise en page de l'élément de telle sorte que l'arrière-plan de l'élément racine est pas transparent, et non la même couleur que le RecyclerView (évidemment)
<RelativeLayout
android:id="@+id/item_root"
android:background="#cc00cc"
android:layout_width="match_parent"
android:layout_height="wrap_content">
le rien raison montrait avant peut-être parce que l'arrière-plan RecyclerView et l'arrière-plan de l'article étaient les mêmes, de sorte que le diviseur était pas visible.
Cette méthode fonctionne à la fois avec les gestionnaires de mise en page linéaire et linéaire.
J'espère que cela (enfin!) Aide :)
Lorsque vous addItemDecoration (nouveau DividerItemDecoration (ce, GridLayoutManager.HORIZONTAL), 2); vous essayez d'ajouter le diviseur à l'index 2, mais l'erreur vous indique que cela est hors limites parce que le nombre d'enfants dans le RecyclerView est 0 (il est vide). Débarrassez-vous de cette ligne, et laissez-moi savoir si quelque chose est montré. – Luke
L'adaptateur ou le recyclerView n'est pas vide. Une liste appropriée est affichée sans écrire cette ligne. – Sagar
Combien d'articles sont dans votre liste? S'il y a moins de 10 (alias moins de 2 lignes), cela peut être le problème – Luke