1414
1515/**
1616 * Created by heng on 16/9/6.
17+ *
18+ * Edited by heng on 16/10/09:
19+ * 修复滚动后返回值错误的bug
1720 */
1821
1922public class PickerViewAlone extends LinearLayout {
@@ -22,8 +25,6 @@ public class PickerViewAlone extends LinearLayout {
2225
2326 private OnSelectedListener onSelectedListener ;
2427
25- private int position ;
26-
2728 public PickerViewAlone (Context context ) {
2829 super (context );
2930 init (context );
@@ -43,13 +44,13 @@ public void setOnSelectedListener(OnSelectedListener listener) {
4344 this .onSelectedListener = listener ;
4445 }
4546
46- public void setPickerData (ReadableArray array , final ArrayList <String > curSelectedList ){
47- switch (array .getType (0 ).name ()){
47+ public void setPickerData (ReadableArray array , final ArrayList <String > curSelectedList ) {
48+ switch (array .getType (0 ).name ()) {
4849 case "Array" :
49- setMultipleData (array ,curSelectedList );
50+ setMultipleData (array , curSelectedList );
5051 break ;
5152 default :
52- setAloneData (array ,curSelectedList );
53+ setAloneData (array , curSelectedList );
5354 break ;
5455 }
5556 }
@@ -105,17 +106,14 @@ private void setMultipleData(ReadableArray array, final ArrayList<String> curSel
105106 @ Override
106107 public void onItemSelected (String item , int index ) {
107108 int viewCount = pickerViewAloneLayout .getChildCount ();
108- for (int j = 0 ; j < viewCount ; j ++) {
109- View view = pickerViewAloneLayout .getChildAt (j );
109+ for (int k = 0 ; k < viewCount ; k ++) {
110+ View view = pickerViewAloneLayout .getChildAt (k );
110111 if (view instanceof LoopView ) {
111112 LoopView loop = (LoopView ) view ;
112- if (loop .getTag () == loopView .getTag ()) {
113- position = j ;
114- break ;
115- }
113+ selectedItems [k ] = loop .getSelectedItem ();
116114 }
117115 }
118- selectedItems [ position ] = item ;
116+
119117 if (onSelectedListener != null ) {
120118 for (int i = 0 ; i < selectedItems .length ; i ++) {
121119 curSelectedList .set (i , selectedItems [i ]);
@@ -169,7 +167,7 @@ public void setIsLoop(boolean isLoop) {
169167 }
170168 }
171169
172- public int getViewHeight (){
170+ public int getViewHeight () {
173171 int viewHeight = 0 ;
174172 View view = pickerViewAloneLayout .getChildAt (0 );
175173 if (view instanceof LoopView ) {
0 commit comments