diff --git a/android-pickerdialog/src/main/java/com/sunjian/android_pickview_lib/view/WheelView.java b/android-pickerdialog/src/main/java/com/sunjian/android_pickview_lib/view/WheelView.java index 9def807..2c1c5a5 100755 --- a/android-pickerdialog/src/main/java/com/sunjian/android_pickview_lib/view/WheelView.java +++ b/android-pickerdialog/src/main/java/com/sunjian/android_pickview_lib/view/WheelView.java @@ -644,6 +644,10 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { if (!(count == 0 || nextItem >= count)) { setCurrentItem(nextItem); handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED); + } else if (isLoop) { + nextItem = getLoopMappingIndex(getCurrentItem() + 1); + setCurrentItem(nextItem); + handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED); } return true; } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { @@ -653,6 +657,10 @@ public boolean onKeyDown(int keyCode, KeyEvent event) { if (!(count == 0 || preItem < 0)) { setCurrentItem(preItem); handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED); + } else if (isLoop) { + preItem = getLoopMappingIndex(getCurrentItem() - 1); + setCurrentItem(preItem); + handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED); } return true; } @@ -663,4 +671,4 @@ private float dp2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return dipValue * scale + 0.5f; } -} \ No newline at end of file +}