@@ -294,16 +294,60 @@ public int getCurrentIndex() {
294294 return currentItem % size ;
295295 }
296296
297- @ Override
298- public void setCurrentItem (int item ) {
297+ public void setCurrentIndex (int index ) {
299298 if (!mIsLoop ) {
300- super .setCurrentItem (item );
299+ super .setCurrentItem (index );
301300 return ;
302301 }
303302 final CardPagerAdapter adapter = (CardPagerAdapter ) getAdapter ();
304303 if (adapter == null ) {
305304 throw new NullPointerException ("adapter is null" );
306305 }
307- super .setCurrentItem (adapter .getLastItem (item ));
306+ super .setCurrentItem (adapter .getLastItem (index ));
307+ }
308+
309+ public void setCurrentIndex (int index , boolean smoothScroll ) {
310+ if (!mIsLoop ) {
311+ // smoothScroll为false的时候滑动间隔过多条目会显示异常,暂时先特殊处理,下同
312+ if (smoothScroll ) {
313+ super .setCurrentItem (index , true );
314+ } else {
315+ super .setCurrentItem (getPreIndex (index ), false );
316+ super .setCurrentItem (index );
317+ }
318+ return ;
319+ }
320+ final CardPagerAdapter adapter = (CardPagerAdapter ) getAdapter ();
321+ if (adapter == null ) {
322+ throw new NullPointerException ("adapter is null" );
323+ }
324+ if (smoothScroll ) {
325+ super .setCurrentItem (adapter .getLastItem (index ), true );
326+ } else {
327+ super .setCurrentItem (adapter .getLastItem (getPreIndex (index )), false );
328+ super .setCurrentItem (adapter .getLastItem (index ));
329+ }
330+ }
331+
332+ private int getPreIndex (int index ) {
333+ return index - 1 < 0 ? size - 1 : index - 1 ;
334+ }
335+
336+ /**
337+ * 请使用{@link #setCurrentIndex(int)}替代
338+ */
339+ @ Deprecated
340+ @ Override
341+ public void setCurrentItem (int item ) {
342+ super .setCurrentItem (item );
343+ }
344+
345+ /**
346+ * 请使用{@link #setCurrentIndex(int, boolean)}替代
347+ */
348+ @ Deprecated
349+ @ Override
350+ public void setCurrentItem (int item , boolean smoothScroll ) {
351+ super .setCurrentItem (item , smoothScroll );
308352 }
309353}
0 commit comments