@@ -15,6 +15,7 @@ public class SkeletonAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
1515
1616 private int mItemCount ;
1717 private int mLayoutReference ;
18+ private int [] mLayoutArrayReferences ;
1819 private int mColor ;
1920 private boolean mShimmer ;
2021 private int mShimmerDuration ;
@@ -23,9 +24,13 @@ public class SkeletonAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
2324 @ Override
2425 public RecyclerView .ViewHolder onCreateViewHolder (ViewGroup parent , int viewType ) {
2526 LayoutInflater inflater = LayoutInflater .from (parent .getContext ());
27+ if (doesArrayOfLayoutsExist ()) {
28+ mLayoutReference = viewType ;
29+ }
2630 if (mShimmer ) {
2731 return new ShimmerViewHolder (inflater , parent , mLayoutReference );
2832 }
33+
2934 return new RecyclerView .ViewHolder (inflater .inflate (mLayoutReference , parent , false )) {
3035 };
3136 }
@@ -41,6 +46,19 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
4146 }
4247 }
4348
49+ @ Override
50+ public int getItemViewType (int position ) {
51+ if (doesArrayOfLayoutsExist ()) {
52+ return getCorrectLayoutItem (position );
53+ }
54+ return super .getItemViewType (position );
55+ }
56+
57+ @ Override
58+ public long getItemId (int position ) {
59+ return position ;
60+ }
61+
4462 @ Override
4563 public int getItemCount () {
4664 return mItemCount ;
@@ -50,6 +68,10 @@ public void setLayoutReference(int layoutReference) {
5068 this .mLayoutReference = layoutReference ;
5169 }
5270
71+ public void setArrayOfLayoutReferences (int [] layoutReferences ) {
72+ this .mLayoutArrayReferences = layoutReferences ;
73+ }
74+
5375 public void setItemCount (int itemCount ) {
5476 this .mItemCount = itemCount ;
5577 }
@@ -69,4 +91,15 @@ public void setShimmerDuration(int shimmerDuration) {
6991 public void setShimmerAngle (@ IntRange (from = 0 , to = 30 ) int shimmerAngle ) {
7092 this .mShimmerAngle = shimmerAngle ;
7193 }
94+
95+ public int getCorrectLayoutItem (int position ) {
96+ if (doesArrayOfLayoutsExist ()) {
97+ return mLayoutArrayReferences [position % mLayoutArrayReferences .length ];
98+ }
99+ return mLayoutReference ;
100+ }
101+
102+ private boolean doesArrayOfLayoutsExist () {
103+ return mLayoutArrayReferences != null && mLayoutArrayReferences .length != 0 ;
104+ }
72105}
0 commit comments