From a10c5bddbe473bdd83b8dd8576274f498d9e1a9a Mon Sep 17 00:00:00 2001 From: jinlongtao Date: Mon, 16 Jan 2017 14:02:11 +0800 Subject: [PATCH] add Picker.select() feature --- .../com/beefe/picker/PickerViewModule.java | 43 +++++++++++++++++-- index.js | 4 ++ ios/RCTBEEPickerManager/BzwPicker.h | 2 +- ios/RCTBEEPickerManager/RCTBEEPickerManager.m | 11 +++++ 4 files changed, 56 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/beefe/picker/PickerViewModule.java b/android/src/main/java/com/beefe/picker/PickerViewModule.java index 3184388..a7ca584 100644 --- a/android/src/main/java/com/beefe/picker/PickerViewModule.java +++ b/android/src/main/java/com/beefe/picker/PickerViewModule.java @@ -107,6 +107,10 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life private Dialog dialog = null; + private PickerViewLinkage pickerViewLinkage; + private PickerViewAlone pickerViewAlone; + private boolean isAlone = true; + private boolean isLoop = true; private String confirmText; @@ -139,8 +143,8 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life TextView titleTV = (TextView) view.findViewById(R.id.title); TextView confirmTV = (TextView) view.findViewById(R.id.confirm); RelativeLayout pickerLayout = (RelativeLayout) view.findViewById(R.id.pickerLayout); - final PickerViewLinkage pickerViewLinkage = (PickerViewLinkage) view.findViewById(R.id.pickerViewLinkage); - final PickerViewAlone pickerViewAlone = (PickerViewAlone) view.findViewById(R.id.pickerViewAlone); + pickerViewLinkage = (PickerViewLinkage) view.findViewById(R.id.pickerViewLinkage); + pickerViewAlone = (PickerViewAlone) view.findViewById(R.id.pickerViewAlone); int barViewHeight; if (options.hasKey(PICKER_TOOL_BAR_HEIGHT)) { @@ -309,6 +313,7 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life String name = pickerData.getType(0).name(); switch (name) { case "Map": + isAlone = false; curStatus = 1; pickerViewLinkage.setVisibility(View.VISIBLE); pickerViewAlone.setVisibility(View.GONE); @@ -400,6 +405,37 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life } } + @ReactMethod + public void select(ReadableArray array) { + if (dialog != null) { + String[] selectValue = new String[array.size()]; + String value = ""; + for (int i = 0; i < array.size(); i++) { + switch (array.getType(i).name()) { + case "Boolean": + value = String.valueOf(array.getBoolean(i)); + break; + case "Number": + try { + value = String.valueOf(array.getInt(i)); + } catch (Exception e) { + value = String.valueOf(array.getDouble(i)); + } + break; + case "String": + value = array.getString(i); + break; + } + selectValue[i] = value; + } + if(isAlone){ + pickerViewAlone.setSelectValue(selectValue); + }else{ + pickerViewLinkage.setSelectValue(selectValue); + } + } + } + @ReactMethod public void isPickerShow(Callback callback) { if (callback == null) @@ -465,6 +501,7 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life @Override public void onHostDestroy() { - + hide(); + dialog = null; } } \ No newline at end of file diff --git a/index.js b/index.js index 6fb963d..d199e5b 100644 --- a/index.js +++ b/index.js @@ -55,6 +55,10 @@ export default { Picker.hide(); }, + select(data) { + Picker.select(data) + }, + toggle(){ this.isPickerShow(show => { if(show){ diff --git a/ios/RCTBEEPickerManager/BzwPicker.h b/ios/RCTBEEPickerManager/BzwPicker.h index a1888bb..2642aa8 100755 --- a/ios/RCTBEEPickerManager/BzwPicker.h +++ b/ios/RCTBEEPickerManager/BzwPicker.h @@ -80,5 +80,5 @@ typedef void(^backBolock)(NSDictionary * ); -(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 weightArry:(NSArray *)weightArry pickerToolBarFontSize:(NSString *)pickerToolBarFontSize pickerFontSize:(NSString *)pickerFontSize pickerFontColor:(NSArray *)pickerFontColor; - +-(void)selectRow; @end diff --git a/ios/RCTBEEPickerManager/RCTBEEPickerManager.m b/ios/RCTBEEPickerManager/RCTBEEPickerManager.m index cf2c5ed..55525a4 100644 --- a/ios/RCTBEEPickerManager/RCTBEEPickerManager.m +++ b/ios/RCTBEEPickerManager/RCTBEEPickerManager.m @@ -117,6 +117,17 @@ RCT_EXPORT_METHOD(hide){ }); }return; } + +RCT_EXPORT_METHOD(select: (NSArray*)data){ + + if (self.pick) { + dispatch_async(dispatch_get_main_queue(), ^{ + _pick.selectValueArry = data; + [_pick selectRow]; + }); + }return; +} + RCT_EXPORT_METHOD(isPickerShow:(RCTResponseSenderBlock)getBack){ if (self.pick) { -- 2.26.2