From 5c155b2c1c6532779efed3e55704edfd3db18e02 Mon Sep 17 00:00:00 2001 From: Mojtaba Yekta Date: Wed, 12 Dec 2018 10:13:51 +0330 Subject: [PATCH 1/3] minor improvement in refreshItemView function --- .../java/com/wangjie/wheelview/WheelView.java | 39 +++---------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/wangjie/wheelview/WheelView.java b/app/src/main/java/com/wangjie/wheelview/WheelView.java index 00bcba7..9c5d18e 100644 --- a/app/src/main/java/com/wangjie/wheelview/WheelView.java +++ b/app/src/main/java/com/wangjie/wheelview/WheelView.java @@ -237,41 +237,12 @@ protected void onScrollChanged(int l, int t, int oldl, int oldt) { } private void refreshItemView(int y) { - int position = y / itemHeight + offset; - int remainder = y % itemHeight; int divided = y / itemHeight; - - if (remainder == 0) { - position = divided + offset; - } else { - if (remainder > itemHeight / 2) { - position = divided + offset + 1; - } - -// if(remainder > itemHeight / 2){ -// if(scrollDirection == SCROLL_DIRECTION_DOWN){ -// position = divided + offset; -// Log.d(TAG, ">down...position: " + position); -// }else if(scrollDirection == SCROLL_DIRECTION_UP){ -// position = divided + offset + 1; -// Log.d(TAG, ">up...position: " + position); -// } -// }else{ -//// position = y / itemHeight + offset; -// if(scrollDirection == SCROLL_DIRECTION_DOWN){ -// position = divided + offset; -// Log.d(TAG, " itemHeight / 2) { + position = divided + offset + 1; } int childSize = views.getChildCount(); From db2015ca1282370424fc3bd58337dcf537e450a1 Mon Sep 17 00:00:00 2001 From: Mojtaba Yekta Date: Wed, 12 Dec 2018 10:16:44 +0330 Subject: [PATCH 2/3] - --- app/src/main/java/com/wangjie/wheelview/WheelView.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/wangjie/wheelview/WheelView.java b/app/src/main/java/com/wangjie/wheelview/WheelView.java index 9c5d18e..26da96d 100644 --- a/app/src/main/java/com/wangjie/wheelview/WheelView.java +++ b/app/src/main/java/com/wangjie/wheelview/WheelView.java @@ -241,9 +241,8 @@ private void refreshItemView(int y) { int remainder = y % itemHeight; int position = divided + offset; - if (remainder > itemHeight / 2) { - position = divided + offset + 1; - } + if (remainder > itemHeight / 2) + position ++; int childSize = views.getChildCount(); for (int i = 0; i < childSize; i++) { From 161e932f4f99b60ec5605bcfd7980768de50203b Mon Sep 17 00:00:00 2001 From: Mojtaba Yekta Date: Wed, 12 Dec 2018 11:13:43 +0330 Subject: [PATCH 3/3] set OnClickListener for TextView items so user can select item by touching them --- .../java/com/wangjie/wheelview/WheelView.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/wangjie/wheelview/WheelView.java b/app/src/main/java/com/wangjie/wheelview/WheelView.java index 26da96d..d4f38d5 100644 --- a/app/src/main/java/com/wangjie/wheelview/WheelView.java +++ b/app/src/main/java/com/wangjie/wheelview/WheelView.java @@ -172,21 +172,22 @@ public void startScrollerTask() { private void initData() { displayItemCount = offset * 2 + 1; - for (String item : items) { - views.addView(createView(item)); + for (int i = 0; i < items.size(); i++) { + views.addView(createView(items.get(i), i - offset)); } - + refreshItemView(0); } int itemHeight = 0; - private TextView createView(String item) { + private View createView(String item, int itemIndex) { TextView tv = new TextView(context); tv.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); tv.setSingleLine(true); tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); tv.setText(item); + tv.setTag(itemIndex); tv.setGravity(Gravity.CENTER); int padding = dip2px(15); tv.setPadding(padding, padding, padding, padding); @@ -197,6 +198,13 @@ private TextView createView(String item) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) this.getLayoutParams(); this.setLayoutParams(new LinearLayout.LayoutParams(lp.width, itemHeight * displayItemCount)); } + tv.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + int itemIndex = (int) v.getTag(); + setSeletion(itemIndex); + } + }); return tv; }