@@ -43,7 +43,9 @@ public class EzRecyclerView<Data extends EzBaseData> extends RecyclerView {
4343 private int startShimmerSize = 0 ;
4444 private int endShimmerSize = 0 ;
4545 private int offset = 0 ;
46+ private int offsetTemp = 0 ;
4647 private int limit = 0 ;
48+ private int limitTemp = 0 ;
4749 private int currentPage = 0 ;
4850 private Data data ;
4951
@@ -206,38 +208,38 @@ public void startShimmer(int shimmerSize, Data data) {
206208 }
207209
208210 public void hideShimmer () {
209- if (endShimmerSize > 0 ) {
210- baseAdapter .removeRange (startShimmerSize , (endShimmerSize + startShimmerSize ));
211- endShimmerSize = 0 ;
212- endShimmerSize = tempShimmerSize ;
213- flagEzRecyclerViewFirstLoad ();
214- flagShimmerStop ();
215-
216- // Remove all views when data list is zero
217- if (baseAdapter .getDataList ().size () <= 0 ) {
218- removeAllViews ();
211+ post (() -> {
212+ if (endShimmerSize > 0 ) {
213+ baseAdapter .removeRange (startShimmerSize , (endShimmerSize + startShimmerSize ));
214+ endShimmerSize = 0 ;
215+ endShimmerSize = tempShimmerSize ;
216+ flagEzRecyclerViewFirstLoad ();
217+ flagShimmerStop ();
218+
219+ // Remove all views when data list is zero
220+ if (baseAdapter .getDataList ().size () <= 0 ) {
221+ removeAllViews ();
222+ }
219223 }
220- }
224+ });
221225 }
222226
223227 private void settingAnimator () {
224228 }
225229
226230 public void add (@ NonNull Data data ) {
227231 flagStopLoading ();
228- baseAdapter .add (data );
232+ post (() -> baseAdapter .add (data ) );
229233 }
230234
231235 public void addAll (@ NonNull List <Data > dataList ) {
232- post (() -> {
233- if (dataList .size () <= 0 ) {
234- flagOnStartLoading ();
235- currentPage = 0 ;
236- return ;
237- }
238- flagStopLoading ();
239- baseAdapter .addAll (dataList );
240- });
236+ if (dataList .size () <= 0 ) {
237+ flagOnStartLoading ();
238+ currentPage = 0 ;
239+ return ;
240+ }
241+ flagStopLoading ();
242+ post (() -> baseAdapter .addAll (dataList ));
241243 }
242244
243245 public void replace (@ NonNull Data data ) {
@@ -249,7 +251,6 @@ public void replaceAll(@NonNull List<Data> dataList) {
249251 if (dataList .size () <= 0 ) {
250252 flagOnStartLoading ();
251253 currentPage = 0 ;
252- return ;
253254 }
254255 flagStopLoading ();
255256 removeAllViews ();
@@ -278,14 +279,15 @@ public void refresh() {
278279 baseAdapter .refresh ();
279280 }
280281
281- public void resetAllViewsAndShimmer () {
282- offset = 0 ;
283- limit = 0 ;
284- endShimmerSize = tempShimmerSize ;
285- flagOnStartLoading ();
282+ /**
283+ * Use #reset() every re-start
284+ * Not recommend for first init
285+ * */
286+ public void reset () {
287+ this .limit = limitTemp ;
288+ this .offset = offsetTemp ;
286289 flagEzRecyclerViewFirstLoad ();
287290 removeAll ();
288- removeAllViews ();
289291 }
290292
291293 public void setEzPaginationListener (EzPaginationListener ezPaginationListener ) {
@@ -294,13 +296,17 @@ public void setEzPaginationListener(EzPaginationListener ezPaginationListener) {
294296 this .offset = 0 ;
295297 this .limit = 0 ;
296298 this .currentPage = 0 ;
299+ this .offsetTemp = 0 ;
300+ this .limitTemp = 0 ;
297301 }
298302
299303 public void setEzPaginationListener (int initialLimit , int initialOffset , EzPaginationListener ezPaginationListener ) {
300304 addOnScrollListener (onScrollListener );
301305 this .ezPaginationListener = ezPaginationListener ;
302306 this .offset = initialOffset ;
303307 this .limit = initialLimit ;
308+ this .offsetTemp = initialOffset ;
309+ this .limitTemp = initialLimit ;
304310 }
305311
306312 private final OnScrollListener onScrollListener = new OnScrollListener () {
@@ -471,7 +477,6 @@ public void setEzMultipleLayout(EzMultipleLayout ezMultipleLayout) {
471477 this .ezMultipleLayout = ezMultipleLayout ;
472478 }
473479
474-
475480 public void add (@ NonNull Data data ) {
476481 this .dataList .add (data );
477482 notifyDataSetChanged ();
@@ -593,6 +598,7 @@ public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
593598 holder .setIsRecyclable (false );
594599 final Data data = dataList .get (position );
595600 data .setPosition (position ); // to know position of view
601+ if (data .isCustomShimmerLayout ()) return ;
596602 listener .setDataOnViewHolder (holder .itemView , data );
597603 // startShimmerItem(holder, data);
598604 }
0 commit comments