From f1cfac1627838d4b6724e032ccbf9d6002486fe1 Mon Sep 17 00:00:00 2001 From: xwenliang Date: Wed, 21 Sep 2016 20:24:35 +0800 Subject: [PATCH] update data structure --- .../com/beefe/picker/PickerViewModule.java | 64 +-- .../beefe/picker/view/PickerViewAlone.java | 16 +- .../beefe/picker/view/PickerViewLinkage.java | 469 +++++++++--------- .../UserInterfaceState.xcuserstate | Bin 18558 -> 18559 bytes ios/RCTBEEPickerManager/BzwPicker.h | 21 +- ios/RCTBEEPickerManager/BzwPicker.m | 351 +++++++------ 6 files changed, 504 insertions(+), 417 deletions(-) diff --git a/android/src/main/java/com/beefe/picker/PickerViewModule.java b/android/src/main/java/com/beefe/picker/PickerViewModule.java index 64aa36b..eabd322 100644 --- a/android/src/main/java/com/beefe/picker/PickerViewModule.java +++ b/android/src/main/java/com/beefe/picker/PickerViewModule.java @@ -95,7 +95,6 @@ public class PickerViewModule extends ReactContextBaseJavaModule { Activity activity = getCurrentActivity(); if (activity != null && options.hasKey(PICKER_DATA)) { view = activity.getLayoutInflater().inflate(R.layout.popup_picker_view, null); - pickerParent = (RelativeLayout) view.findViewById(R.id.pickerParent); barLayout = (RelativeLayout) view.findViewById(R.id.barLayout); cancelTV = (TextView) view.findViewById(R.id.cancel); @@ -218,26 +217,27 @@ public class PickerViewModule extends ReactContextBaseJavaModule { } } - switch (options.getType(PICKER_DATA).name()) { + if (options.hasKey(PICKER_BG_COLOR)) { + ReadableArray array = options.getArray(PICKER_BG_COLOR); + for (int i = 0; i < array.size(); i++) { + if (i == 3) { + pickerColor[i] = (int) (array.getDouble(i) * 255); + } else { + pickerColor[i] = array.getInt(i); + } + } + } + + ReadableArray pickerData = options.getArray(PICKER_DATA); + + String name = pickerData.getType(0).name(); + switch (name) { case "Map": pickerViewLinkage.setVisibility(View.VISIBLE); pickerViewAlone.setVisibility(View.GONE); - ReadableMap linkageData = options.getMap(PICKER_DATA); - if (linkageData != null) { - pickerViewLinkage.setLinkageData(linkageData, curSelectedList); - } + pickerViewLinkage.setPickerData(pickerData, curSelectedList); pickerViewLinkage.setIsLoop(isLoop); - if (options.hasKey(PICKER_BG_COLOR)) { - ReadableArray array = options.getArray(PICKER_BG_COLOR); - for (int i = 0; i < array.size(); i++) { - if (i == 3) { - pickerColor[i] = (int) (array.getDouble(i) * 255); - } else { - pickerColor[i] = array.getInt(i); - } - } - pickerViewLinkage.setBackgroundColor(Color.argb(pickerColor[3], pickerColor[0], pickerColor[1], pickerColor[2])); - } + pickerViewLinkage.setBackgroundColor(Color.argb(pickerColor[3], pickerColor[0], pickerColor[1], pickerColor[2])); pickerViewLinkage.setOnSelectListener(new OnSelectedListener() { @Override public void onSelected(ArrayList selectedList) { @@ -247,33 +247,13 @@ public class PickerViewModule extends ReactContextBaseJavaModule { }); pickerViewLinkage.setSelectValue(selectValue, curSelectedList); break; - case "Array": + default: pickerViewAlone.setVisibility(View.VISIBLE); pickerViewLinkage.setVisibility(View.GONE); - ReadableArray aloneData = options.getArray(PICKER_DATA); - - if (aloneData != null) { - switch (aloneData.getType(0).name()) { - case "Array": - pickerViewAlone.setPickerViewDta(aloneData, curSelectedList); - break; - default: - pickerViewAlone.setAloneData(aloneData, curSelectedList); - break; - } - } + + pickerViewAlone.setPickerData(pickerData, curSelectedList); pickerViewAlone.setIsLoop(isLoop); - if (options.hasKey(PICKER_BG_COLOR)) { - ReadableArray array = options.getArray(PICKER_BG_COLOR); - for (int i = 0; i < array.size(); i++) { - if (i == 3) { - pickerColor[i] = (int) (array.getDouble(i) * 255); - } else { - pickerColor[i] = array.getInt(i); - } - } - pickerViewAlone.setBackgroundColor(Color.argb(pickerColor[3], pickerColor[0], pickerColor[1], pickerColor[2])); - } + pickerViewAlone.setBackgroundColor(Color.argb(pickerColor[3], pickerColor[0], pickerColor[1], pickerColor[2])); pickerViewAlone.setOnSelectedListener(new OnSelectedListener() { @Override @@ -284,10 +264,10 @@ public class PickerViewModule extends ReactContextBaseJavaModule { }); pickerViewAlone.setSelectValue(selectValue, curSelectedList); - break; } + if (popupWindow == null) { popupWindow = new PopupWindow(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); popupWindow.setBackgroundDrawable(new ColorDrawable()); diff --git a/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java b/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java index ef31445..194c943 100644 --- a/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java +++ b/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java @@ -43,7 +43,18 @@ public class PickerViewAlone extends LinearLayout { this.onSelectedListener = listener; } - public void setAloneData(ReadableArray array, final ArrayList curSelectedList) { + public void setPickerData(ReadableArray array, final ArrayList curSelectedList){ + switch (array.getType(0).name()){ + case "Array": + setMultipleData(array,curSelectedList); + break; + default: + setAloneData(array,curSelectedList); + break; + } + } + + private void setAloneData(ReadableArray array, final ArrayList curSelectedList) { ArrayList values = arrayToList(array); final LoopView loopView = new LoopView(getContext()); LayoutParams params = new LayoutParams( @@ -69,8 +80,7 @@ public class PickerViewAlone extends LinearLayout { pickerViewAloneLayout.addView(loopView); } - - public void setPickerViewDta(ReadableArray array, final ArrayList curSelectedList) { + private void setMultipleData(ReadableArray array, final ArrayList curSelectedList) { final String[] selectedItems = new String[array.size()]; for (int i = 0; i < array.size(); i++) { switch (array.getType(i).name()) { diff --git a/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java b/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java index 02f8ce3..0005876 100644 --- a/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java +++ b/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java @@ -73,10 +73,7 @@ public class PickerViewLinkage extends LinearLayout { private ArrayList twoList = new ArrayList<>(); private ArrayList threeList = new ArrayList<>(); - private ReadableArray array; - private ReadableMap map; - private ReadableMap childMap; - + private ArrayList data = new ArrayList<>(); private int selectOneIndex; private int selectTwoIndex; @@ -87,12 +84,20 @@ public class PickerViewLinkage extends LinearLayout { } } - public void setLinkageData(final ReadableMap map, final ArrayList curSelectedList) { - this.map = map; - ReadableMapKeySetIterator iterator = map.keySetIterator(); - while (iterator.hasNextKey()) { - String key = iterator.nextKey(); - oneList.add(key); + /** + * ReadableArray getMap will remove the item. + * + * */ + public void setPickerData(ReadableArray array, final ArrayList curSelectedList) { + oneList.clear(); + for (int i = 0; i < array.size(); i++) { + ReadableMap map = array.getMap(i); + data.add(map); + ReadableMapKeySetIterator iterator = map.keySetIterator(); + if (iterator.hasNextKey()) { + String oneValue = iterator.nextKey(); + oneList.add(oneValue); + } } checkItems(loopViewOne, oneList); if (curSelectedList.size() > 0) { @@ -100,126 +105,135 @@ public class PickerViewLinkage extends LinearLayout { } else { curSelectedList.add(0, oneList.get(0)); } - String name = map.getType(oneList.get(0)).name(); - switch (name) { - case "Map": - setRow(3); - childMap = map.getMap(oneList.get(0)); - ReadableMapKeySetIterator childIterator = childMap.keySetIterator(); - twoList.clear(); - while (childIterator.hasNextKey()) { - String key = childIterator.nextKey(); - twoList.add(key); - } - checkItems(loopViewTwo, twoList); - if (curSelectedList.size() > 1) { - curSelectedList.set(1, twoList.get(0)); - } else { - curSelectedList.add(1, twoList.get(0)); - } - array = childMap.getArray(twoList.get(0)); - threeList.clear(); - threeList = arrayToList(array); - checkItems(loopViewThree, threeList); - if (curSelectedList.size() > 2) { - curSelectedList.set(2, threeList.get(0)); - } else { - curSelectedList.add(2, threeList.get(0)); - } + ReadableArray childArray = data.get(0).getArray(oneList.get(0)); + String name = childArray.getType(0).name(); + if (name.equals("Map")) { + setRow(3); + + twoList.clear(); + getTwoListData(); + checkItems(loopViewTwo, twoList); + if (curSelectedList.size() > 1) { + curSelectedList.set(1, twoList.get(0)); + } else { + curSelectedList.add(1, twoList.get(0)); + } + + ReadableMap childMap = data.get(0).getArray(oneList.get(0)).getMap(0); + String key = childMap.keySetIterator().nextKey(); + ReadableArray sunArray = childMap.getArray(key); + threeList.clear(); + threeList = arrayToList(sunArray); + checkItems(loopViewThree, threeList); + if (curSelectedList.size() > 2) { + curSelectedList.set(2, threeList.get(0)); + } else { + curSelectedList.add(2, threeList.get(0)); + } - loopViewOne.setListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(String item, int index) { - selectOneIndex = index; - curSelectedList.set(0, item); - - childMap = map.getMap(item); - ReadableMapKeySetIterator childIterator = childMap.keySetIterator(); - twoList.clear(); - while (childIterator.hasNextKey()) { - String key = childIterator.nextKey(); - twoList.add(key); + loopViewOne.setListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(String item, int index) { + selectOneIndex = index; + curSelectedList.set(0, item); + twoList.clear(); + ReadableArray arr = data.get(index).getArray(item); + for (int i = 0; i < arr.size(); i++) { + ReadableMap map = arr.getMap(i); + ReadableMapKeySetIterator ite = map.keySetIterator(); + if (ite.hasNextKey()) { + twoList.add(ite.nextKey()); } - checkItems(loopViewTwo, twoList); - curSelectedList.set(1, twoList.get(0)); + } + checkItems(loopViewTwo, twoList); + curSelectedList.set(1, twoList.get(0)); - array = childMap.getArray(twoList.get(0)); - threeList.clear(); - threeList = arrayToList(array); - checkItems(loopViewThree, threeList); - curSelectedList.set(2, threeList.get(0)); - if (onSelectedListener != null) { - onSelectedListener.onSelected(curSelectedList); - } + ReadableArray ar = data.get(index).getArray(item); + ReadableMap childMap = ar.getMap(0); + String key = childMap.keySetIterator().nextKey(); + ReadableArray sunArray = childMap.getArray(key); + threeList.clear(); + threeList = arrayToList(sunArray); + checkItems(loopViewThree, threeList); + curSelectedList.set(2, threeList.get(0)); + + if (onSelectedListener != null) { + onSelectedListener.onSelected(curSelectedList); } - }); - - loopViewTwo.setListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(String item, int index) { - selectTwoIndex = index; - array = childMap.getArray(item); - threeList.clear(); - threeList = arrayToList(array); - checkItems(loopViewThree, threeList); - - curSelectedList.set(0, oneList.get(selectOneIndex)); - curSelectedList.set(1, item); - curSelectedList.set(2, threeList.get(0)); - if (onSelectedListener != null) { - onSelectedListener.onSelected(curSelectedList); - } + } + }); + + loopViewTwo.setListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(String item, int index) { + selectTwoIndex = index; + + ReadableArray arr = data.get(selectOneIndex).getArray(oneList.get(selectOneIndex)); + ReadableMap childMap = arr.getMap(index); + String key = childMap.keySetIterator().nextKey(); + ReadableArray sunArray = childMap.getArray(key); + threeList.clear(); + threeList = arrayToList(sunArray); + checkItems(loopViewThree, threeList); + + curSelectedList.set(0, oneList.get(selectOneIndex)); + curSelectedList.set(1, item); + curSelectedList.set(2, threeList.get(0)); + if (onSelectedListener != null) { + onSelectedListener.onSelected(curSelectedList); } - }); - - loopViewThree.setListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(String item, int index) { - curSelectedList.set(0, oneList.get(selectOneIndex)); - curSelectedList.set(1, twoList.get(selectTwoIndex)); - curSelectedList.set(2, item); - if (onSelectedListener != null) { - onSelectedListener.onSelected(curSelectedList); - } + } + }); + + loopViewThree.setListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(String item, int index) { + curSelectedList.set(0, oneList.get(selectOneIndex)); + curSelectedList.set(1, twoList.get(selectTwoIndex)); + curSelectedList.set(2, item); + if (onSelectedListener != null) { + onSelectedListener.onSelected(curSelectedList); } - }); - break; - case "Array": - setRow(2); - loopViewOne.setListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(String item, int index) { - selectOneIndex = index; - array = map.getArray(item); - twoList = arrayToList(array); - checkItems(loopViewTwo, twoList); - curSelectedList.set(0, item); - curSelectedList.set(1, twoList.get(0)); - if (onSelectedListener != null) { - onSelectedListener.onSelected(curSelectedList); - } + } + }); + } else { + setRow(2); + loopViewOne.setListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(String item, int index) { + selectOneIndex = index; + ReadableArray arr = data.get(index).getArray(item); + twoList.clear(); + twoList = arrayToList(arr); + checkItems(loopViewTwo, twoList); + curSelectedList.set(0, item); + curSelectedList.set(1, twoList.get(0)); + if (onSelectedListener != null) { + onSelectedListener.onSelected(curSelectedList); } - }); - - array = map.getArray(oneList.get(0)); - twoList = arrayToList(array); - checkItems(loopViewTwo, twoList); + } + }); + + twoList.clear(); + twoList = arrayToList(childArray); + checkItems(loopViewTwo, twoList); + if (curSelectedList.size() > 1) { + curSelectedList.set(1, twoList.get(0)); + } else { curSelectedList.add(1, twoList.get(0)); - loopViewTwo.setListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(String item, int index) { - curSelectedList.set(0, oneList.get(selectOneIndex)); - curSelectedList.set(1, item); - if (onSelectedListener != null) { - onSelectedListener.onSelected(curSelectedList); - } + } + loopViewTwo.setListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(String item, int index) { + curSelectedList.set(0, oneList.get(selectOneIndex)); + curSelectedList.set(1, item); + if (onSelectedListener != null) { + onSelectedListener.onSelected(curSelectedList); } - }); - break; - default: - break; + } + }); } } @@ -258,39 +272,26 @@ public class PickerViewLinkage extends LinearLayout { } else { switch (selectValue.length) { case 1: - if (loopViewOne.hasItem(selectValue[0])) { - selectOneIndex = loopViewOne.getItemPosition(selectValue[0]); - loopViewOne.setSelectedPosition(selectOneIndex); - curSelectedList.set(0, loopViewOne.getIndexItem(selectOneIndex)); - } else { - loopViewOne.setSelectedPosition(0); - curSelectedList.set(0, loopViewOne.getIndexItem(0)); - } + selectOneLoop(selectValue, curSelectedList); switch (curRow) { case 3: - childMap = map.getMap(oneList.get(selectOneIndex)); - ReadableMapKeySetIterator childIterator = childMap.keySetIterator(); - twoList.clear(); - while (childIterator.hasNextKey()) { - String key = childIterator.nextKey(); - twoList.add(key); - } + twoList.clear(); + getTwoListData(); loopViewTwo.setItems(twoList); loopViewTwo.setSelectedPosition(0); curSelectedList.set(1, loopViewTwo.getIndexItem(0)); - array = childMap.getArray(twoList.get(0)); threeList.clear(); - threeList = arrayToList(array); + getThreeListData(); loopViewThree.setItems(threeList); loopViewThree.setSelectedPosition(0); curSelectedList.set(2, loopViewThree.getIndexItem(0)); break; case 2: - array = map.getArray(oneList.get(selectOneIndex)); - twoList = arrayToList(array); + twoList.clear(); + getAllTwoListData(); loopViewTwo.setItems(twoList); loopViewTwo.setSelectedPosition(0); curSelectedList.set(1, loopViewTwo.getIndexItem(0)); @@ -300,35 +301,15 @@ public class PickerViewLinkage extends LinearLayout { case 2: switch (curRow) { case 3: - if (loopViewOne.hasItem(selectValue[0])) { - selectOneIndex = loopViewOne.getItemPosition(selectValue[0]); - loopViewOne.setSelectedPosition(selectOneIndex); - curSelectedList.set(0, loopViewOne.getIndexItem(selectOneIndex)); - } else { - loopViewOne.setSelectedPosition(0); - curSelectedList.set(0, loopViewOne.getIndexItem(0)); - } - - childMap = map.getMap(oneList.get(selectOneIndex)); - ReadableMapKeySetIterator childIterator = childMap.keySetIterator(); + selectOneLoop(selectValue, curSelectedList); + twoList.clear(); - while (childIterator.hasNextKey()) { - String key = childIterator.nextKey(); - twoList.add(key); - } - loopViewTwo.setItems(twoList); - if (loopViewTwo.hasItem(selectValue[1])) { - selectTwoIndex = loopViewTwo.getItemPosition(selectValue[1]); - loopViewTwo.setSelectedPosition(selectTwoIndex); - curSelectedList.set(1, loopViewTwo.getIndexItem(selectTwoIndex)); - } else { - loopViewTwo.setSelectedPosition(0); - curSelectedList.set(1, loopViewTwo.getIndexItem(0)); - } - - array = childMap.getArray(twoList.get(selectTwoIndex)); + getTwoListData(); + selectTwoLoop(selectValue,curSelectedList); + + threeList.clear(); - threeList = arrayToList(array); + getThreeListData(); loopViewThree.setItems(threeList); loopViewThree.setSelectedPosition(0); curSelectedList.set(2, loopViewThree.getIndexItem(0)); @@ -344,78 +325,124 @@ public class PickerViewLinkage extends LinearLayout { private void selectValues(String[] values, final ArrayList curSelectedList) { switch (values.length) { case 3: - if (loopViewOne.hasItem(values[0])) { - selectOneIndex = loopViewOne.getItemPosition(values[0]); - loopViewOne.setSelectedPosition(selectOneIndex); - curSelectedList.set(0, loopViewOne.getIndexItem(selectOneIndex)); - } else { - loopViewOne.setSelectedPosition(0); - curSelectedList.set(0, loopViewOne.getIndexItem(0)); - } + selectOneLoop(values, curSelectedList); - childMap = map.getMap(oneList.get(selectOneIndex)); - ReadableMapKeySetIterator childIterator = childMap.keySetIterator(); twoList.clear(); - while (childIterator.hasNextKey()) { - String key = childIterator.nextKey(); - twoList.add(key); - } - loopViewTwo.setItems(twoList); - if (loopViewTwo.hasItem(values[1])) { - selectTwoIndex = loopViewTwo.getItemPosition(values[1]); - loopViewTwo.setSelectedPosition(selectTwoIndex); - curSelectedList.set(1, loopViewTwo.getIndexItem(selectTwoIndex)); - } else { - loopViewTwo.setSelectedPosition(0); - curSelectedList.set(1, loopViewTwo.getIndexItem(0)); - } + getTwoListData(); + selectTwoLoop(values, curSelectedList); - array = childMap.getArray(twoList.get(selectTwoIndex)); threeList.clear(); - threeList = arrayToList(array); - loopViewThree.setItems(threeList); - if (loopViewThree.hasItem(values[2])) { - int selectThreeIndex = loopViewThree.getItemPosition(values[2]); - loopViewThree.setSelectedPosition(selectThreeIndex); - curSelectedList.set(2, loopViewThree.getIndexItem(selectThreeIndex)); - } else { - loopViewThree.setSelectedPosition(0); - curSelectedList.set(2, loopViewThree.getIndexItem(0)); - } + getThreeListData(); + selectThreeLoop(values, curSelectedList); break; case 2: - if (loopViewOne.hasItem(values[0])) { - selectOneIndex = loopViewOne.getItemPosition(values[0]); - loopViewOne.setSelectedPosition(selectOneIndex); - curSelectedList.set(0, loopViewOne.getIndexItem(selectOneIndex)); - } else { - loopViewOne.setSelectedPosition(0); - curSelectedList.set(0, loopViewOne.getIndexItem(0)); - } + selectOneLoop(values, curSelectedList); - array = map.getArray(oneList.get(selectOneIndex)); - twoList = arrayToList(array); - loopViewTwo.setItems(twoList); - if (loopViewTwo.hasItem(values[1])) { - selectTwoIndex = loopViewTwo.getItemPosition(values[1]); - loopViewTwo.setSelectedPosition(selectTwoIndex); - curSelectedList.set(1, loopViewTwo.getIndexItem(selectTwoIndex)); - } else { - loopViewTwo.setSelectedPosition(0); - curSelectedList.set(1, loopViewTwo.getIndexItem(0)); - } + twoList.clear(); + getAllTwoListData(); + selectTwoLoop(values, curSelectedList); break; default: break; } } + /** + * 设置第一个滚轮选中的值 + */ + private void selectOneLoop(String[] values, final ArrayList curSelectedList) { + if (loopViewOne.hasItem(values[0])) { + selectOneIndex = loopViewOne.getItemPosition(values[0]); + loopViewOne.setSelectedPosition(selectOneIndex); + curSelectedList.set(0, loopViewOne.getIndexItem(selectOneIndex)); + } else { + selectOneIndex = 0; + loopViewOne.setSelectedPosition(0); + curSelectedList.set(0, loopViewOne.getIndexItem(0)); + } + } + + /** + * 设置第二个滚轮选中的值 + */ + private void selectTwoLoop(String[] values, final ArrayList curSelectedList) { + loopViewTwo.setItems(twoList); + if (loopViewTwo.hasItem(values[1])) { + selectTwoIndex = loopViewTwo.getItemPosition(values[1]); + loopViewTwo.setSelectedPosition(selectTwoIndex); + curSelectedList.set(1, loopViewTwo.getIndexItem(selectTwoIndex)); + } else { + selectTwoIndex = 0; + loopViewTwo.setSelectedPosition(0); + curSelectedList.set(1, loopViewTwo.getIndexItem(0)); + } + } + + /** + * 设置第三个滚轮选中的值 + */ + private void selectThreeLoop(String[] values, final ArrayList curSelectedList) { + loopViewThree.setItems(threeList); + if (loopViewThree.hasItem(values[2])) { + int selectThreeIndex = loopViewThree.getItemPosition(values[2]); + loopViewThree.setSelectedPosition(selectThreeIndex); + curSelectedList.set(2, loopViewThree.getIndexItem(selectThreeIndex)); + } else { + loopViewThree.setSelectedPosition(0); + curSelectedList.set(2, loopViewThree.getIndexItem(0)); + } + } + + /** + * 只有两个滚轮 + * 获取第二个滚轮的值 + */ + private void getAllTwoListData() { + ReadableArray arr = data.get(selectOneIndex).getArray(oneList.get(selectOneIndex)); + twoList = arrayToList(arr); + } + + /** + * 有三个滚轮 + * 获取第二个滚轮的值 + */ + private void getTwoListData() { + ReadableArray childArray = data.get(selectOneIndex).getArray(oneList.get(selectOneIndex)); + for (int i = 0; i < childArray.size(); i++) { + ReadableMap map = childArray.getMap(i); + ReadableMapKeySetIterator iterator = map.keySetIterator(); + if (iterator.hasNextKey()) { + twoList.add(iterator.nextKey()); + } + } + } + + /** + * 获取第三个滚轮的值 + * */ + private void getThreeListData(){ + //{ NativeMap: {"b":[{"b1":[11,22,33,44]},{"b2":[55,66,77,88]},{"b3":[99,1010,1111,1212]}]} } + ReadableMap childMap = data.get(selectOneIndex).getArray(oneList.get(selectOneIndex)).getMap(selectTwoIndex); + String key = childMap.keySetIterator().nextKey(); + ReadableArray sunArray = childMap.getArray(key); + threeList = arrayToList(sunArray); + } + public void setIsLoop(boolean isLoop) { if (!isLoop) { - loopViewOne.setNotLoop(); - loopViewTwo.setNotLoop(); - loopViewThree.setNotLoop(); + switch (curRow) { + case 2: + loopViewOne.setNotLoop(); + loopViewTwo.setNotLoop(); + break; + case 3: + loopViewOne.setNotLoop(); + loopViewTwo.setNotLoop(); + loopViewThree.setNotLoop(); + break; + } + } } diff --git a/ios/RCTBEEPickerManager.xcodeproj/project.xcworkspace/xcuserdata/mfhj-dz-001-417.xcuserdatad/UserInterfaceState.xcuserstate b/ios/RCTBEEPickerManager.xcodeproj/project.xcworkspace/xcuserdata/mfhj-dz-001-417.xcuserdatad/UserInterfaceState.xcuserstate index e9a5be8a5a67f859432f89711b973c07bdb729a8..efef571256200e7f3009442094140cac7e95d8bc 100644 GIT binary patch delta 9603 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 Hf~o%p_zuvF diff --git a/ios/RCTBEEPickerManager/BzwPicker.h b/ios/RCTBEEPickerManager/BzwPicker.h index 371165b..ecc4baa 100755 --- a/ios/RCTBEEPickerManager/BzwPicker.h +++ b/ios/RCTBEEPickerManager/BzwPicker.h @@ -22,12 +22,15 @@ typedef void(^backBolock)(NSDictionary * ); @property (strong, nonatomic) NSDictionary *pickerDic;//一开始进来的字典 -@property (strong, nonatomic) NSArray *provinceArray;//省、市 -@property (strong, nonatomic) NSArray *cityArray;//市,县 +@property(strong,nonatomic)NSArray *dataDry;//一进来的就没有数组和字典的区别肯定是一个字典 + +@property (strong, nonatomic) NSMutableArray *provinceArray;//省、市 +@property (strong, nonatomic) NSMutableArray *cityArray;//市,县 @property (strong, nonatomic) NSArray *townArray;//县,区 -@property (strong, nonatomic) NSDictionary *selectedDic;//3级联动时候用到的 +@property(strong,nonatomic)NSArray *selectthreeAry; + @property (strong,nonatomic)NSArray *selectArry;//2级联动时候用的 @property (strong,nonatomic)UIButton *leftBtn;//取消 @@ -38,8 +41,6 @@ typedef void(^backBolock)(NSDictionary * ); @property(strong,nonatomic)NSString *rightStr; -//用来判断进来的类型 -@property(strong,nonatomic)id value; @property(assign,nonatomic)BOOL Correlation;//判断有没有没有关联 @@ -52,10 +53,20 @@ typedef void(^backBolock)(NSDictionary * ); @property(assign,nonatomic)BOOL noArryElementBool; +@property(strong,nonatomic)NSMutableArray *infoArry; + //创建一个数组 接收进来的选择Value @property(strong,nonatomic)NSArray *selectValueArry; +//创建一个下角标记录是第几行 来一进来判断第一行被选中 当进来的是关联两行的逻辑的时候 或者三行关联的时候取第二行做记录 + +@property(assign,nonatomic)NSInteger num; + +//创建一个下角标 第三行做记录 + +@property(assign,nonatomic)NSInteger threenum; + -(instancetype)initWithFrame:(CGRect)frame dic:(NSDictionary *)dic leftStr:(NSString *)leftStr centerStr:(NSString *)centerStr rightStr:(NSString *)rightStr topbgColor:(NSArray *)topbgColor bottombgColor:(NSArray *)bottombgColor leftbtnbgColor:(NSArray *)leftbtnbgColor rightbtnbgColor:(NSArray *)rightbtnbgColor centerbtnColor:(NSArray *)centerbtnColor selectValueArry:(NSArray *)selectValueArry; diff --git a/ios/RCTBEEPickerManager/BzwPicker.m b/ios/RCTBEEPickerManager/BzwPicker.m index 34ac20e..7b24c3a 100755 --- a/ios/RCTBEEPickerManager/BzwPicker.m +++ b/ios/RCTBEEPickerManager/BzwPicker.m @@ -16,6 +16,8 @@ if (self) { self.backArry=[[NSMutableArray alloc]init]; + self.provinceArray=[[NSMutableArray alloc]init]; + self.cityArray=[[NSMutableArray alloc]init]; self.selectValueArry=selectValueArry; self.pickerDic=dic; self.leftStr=leftStr; @@ -83,13 +85,6 @@ [self addSubview:self.pick]; self.pick.backgroundColor=[self colorWith:bottombgColor]; - - if (_Correlation) { - - NSDictionary *dic=(NSDictionary *)self.value; - - self.selectedDic =[dic objectForKey:[self.provinceArray objectAtIndex:0]]; - } } //返回显示的列数 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView @@ -194,106 +189,116 @@ //表示一个数组 特殊情况 return 110; }else{ - NSArray *arry=(NSArray *)self.value; - return SCREEN_WIDTH/arry.count; + return SCREEN_WIDTH/self.dataDry.count; } } } - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { + if (!row) { + row=0; + } [self.backArry removeAllObjects]; - + [self.infoArry removeAllObjects]; + if (_Correlation) { //这里是关联的 - if ([_numberCorrela isEqualToString:@"three"]) { - - if (component == 0) - { - NSDictionary *dic=(NSDictionary *)self.value; - - NSInteger setline=[_pick selectedRowInComponent:0]; - - if (setline) { - self.selectedDic =[dic objectForKey:[self.provinceArray objectAtIndex:setline]]; - }else{ - self.selectedDic =[dic objectForKey:[self.provinceArray objectAtIndex:row]]; - } + if ([_numberCorrela isEqualToString:@"three"]) { - if (self.selectedDic) { - - self.cityArray = [self.selectedDic allKeys]; - } - else - { - self.cityArray = nil; - } - if (self.cityArray.count > 0) + if (component == 0) { + [self.cityArray removeAllObjects]; - NSInteger oldrow=[self.pick selectedRowInComponent:1]; - - if (oldrow) { + NSInteger setline=[_pick selectedRowInComponent:0]; + + if (setline) { - self.townArray=[self.selectedDic objectForKey:[self.cityArray objectAtIndex:oldrow]]; + self.selectthreeAry =[[self.dataDry objectAtIndex:setline]objectForKey:[self.provinceArray objectAtIndex:setline]]; }else{ - row=0; + setline=0; - self.townArray=[self.selectedDic objectForKey:[self.cityArray objectAtIndex:row]]; + self.selectthreeAry =[[self.dataDry objectAtIndex:0] objectForKey:[self.provinceArray objectAtIndex:0]]; } + + if (self.selectthreeAry) { + //遍历数组 + for (NSInteger i=0; i 0) + { + + self.townArray=[[self.selectthreeAry objectAtIndex:0]objectForKey:[self.cityArray objectAtIndex:0]]; + + } + else + { + self.townArray = nil; + } + [pickerView reloadAllComponents]; + [pickerView selectRow:0 inComponent:1 animated:YES]; + [pickerView selectRow:0 inComponent:2 animated:YES]; + } - else - { - self.townArray = nil; - } - } - - [pickerView selectedRowInComponent:1]; - [pickerView reloadAllComponents]; - [pickerView selectedRowInComponent:2]; - - if (component == 1) - { - if (self.selectedDic && self.cityArray.count > 0) + if (component == 1) { - self.townArray=[self.selectedDic objectForKey:[self.cityArray objectAtIndex:row]]; - } - else - { - self.townArray = nil; + NSInteger setline=[_pick selectedRowInComponent:0]; + + if (setline) { + + self.selectthreeAry =[[self.dataDry objectAtIndex:setline]objectForKey:[self.provinceArray objectAtIndex:setline]]; + + NSLog(@"%@",_selectthreeAry); + self.townArray=[[self.selectthreeAry objectAtIndex:row]objectForKey:[self.cityArray objectAtIndex:row]]; + + }else{ + + setline=0; + + self.selectthreeAry =[[self.dataDry objectAtIndex:0] objectForKey:[self.provinceArray objectAtIndex:0]]; + + //NSLog(@"%ld",(long)row); + self.townArray=[[self.selectthreeAry objectAtIndex:row]objectForKey:[self.cityArray objectAtIndex:row]]; + } + + [pickerView reloadAllComponents]; + [pickerView selectRow:0 inComponent:2 animated:YES]; } - [pickerView selectRow:1 inComponent:2 animated:YES]; - } - - [pickerView reloadComponent:2]; - - }else if ([_numberCorrela isEqualToString:@"two"]){ - - if (component == 0) - { - NSDictionary *dic=(NSDictionary *)self.value; - self.selectArry =[dic objectForKey:[self.provinceArray objectAtIndex:row]]; + }else if ([_numberCorrela isEqualToString:@"two"]){ - if (self.selectArry.count>0) { - - self.cityArray = self.selectArry; - } - else + if (component == 0) { - self.cityArray = nil; + [self.cityArray removeAllObjects]; + + self.selectArry =[[self.dataDry objectAtIndex:row]objectForKey:[self.provinceArray objectAtIndex:row]]; + + if (self.selectArry.count>0) { + + [self.cityArray addObjectsFromArray:self.selectArry]; + } + else + { + self.cityArray = nil; + } } + [pickerView reloadComponent:1]; + [pickerView selectRow:0 inComponent:1 animated:YES]; } - - [pickerView selectedRowInComponent:1]; - [pickerView reloadComponent:1]; - } } //返回选择的值就可以了 @@ -310,30 +315,33 @@ [self.backArry addObject:c]; }else if ([_numberCorrela isEqualToString:@"two"]){ - + NSString *a=[self.provinceArray objectAtIndex:[self.pick selectedRowInComponent:0]]; NSString *b=[self.cityArray objectAtIndex:[self.pick selectedRowInComponent:1]]; - NSLog(@"%@---%@",a,b); + // NSLog(@"%@---%@",a,b); [self.backArry addObject:a]; [self.backArry addObject:b]; } }else { + if (_noArryElementBool) { [self.backArry addObject:[self.noCorreArry objectAtIndex:row]]; - }else{ - //无关联的,直接给三个选项就行 - for (NSInteger i=0; i 0) { + //这里是关联的 + if ([_numberCorrela isEqualToString:@"three"]) { + //省 市 + for (NSInteger i=0; i 0) { + NSDictionary *dic=[self.dataDry firstObject]; + + NSArray *ary=[dic objectForKey:[self.provinceArray objectAtIndex:0]]; + + + if (self.provinceArray.count > 0) { + + for (NSInteger i=0; i 0) { + + NSDictionary *dic=[ary firstObject]; + + self.townArray=[dic objectForKey:[self.cityArray firstObject]]; + + } + }else if ([_numberCorrela isEqualToString:@"two"]){ + for (NSInteger i=0; i0) { - self.cityArray=selecityAry; + [self.cityArray removeAllObjects]; + + for (NSInteger i=0; i0) { if (self.selectValueArry.count>1) { - NSArray *arry =[threeDic objectForKey:[self.selectValueArry objectAtIndex:1]]; + NSArray *arry =[[selecityAry objectAtIndex:_threenum] objectForKey:[self.selectValueArry objectAtIndex:1]]; + if (arry.count>0) { self.townArray=arry; @@ -552,10 +602,9 @@ } } [_pick reloadAllComponents]; - } //两行时候的选择哪个的逻辑 --(void)selectValueTwo:(NSDictionary *)dic +-(void)selectValueTwo { NSString *selectStr=[NSString stringWithFormat:@"%@",self.selectValueArry.firstObject]; @@ -563,21 +612,30 @@ for (NSInteger i=0; i0) { + + [self.cityArray removeAllObjects]; + [self.cityArray addObjectsFromArray:twoArry]; } + NSString *selectTwoStr; if (self.selectValueArry.count>1) { + selectTwoStr =[NSString stringWithFormat:@"%@",[self.selectValueArry objectAtIndex:1]]; } for (NSInteger i=0; i