├── .buckconfig ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .gitignore ├── .watchmanconfig ├── App.js ├── App ├── CityList │ ├── Config │ │ ├── alphabeticalIndex.js │ │ ├── cityIndex.js │ │ └── hotCities.js │ ├── Images │ │ ├── Close.png │ │ └── location.png │ ├── Styles.js │ └── index.js ├── Components │ ├── Header │ │ ├── Style.js │ │ └── index.js │ └── List │ │ ├── Styles.js │ │ ├── UpPullLoading │ │ ├── arrow@2x.png │ │ └── index.js │ │ └── index.js └── Themes │ ├── Colors.js │ ├── Fonts.js │ ├── Height.js │ ├── Px.js │ ├── Styles.js │ └── index.js ├── __tests__ └── App-test.js ├── android ├── app │ ├── BUCK │ ├── build.gradle │ ├── build_defs.bzl │ ├── proguard-rules.pro │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── listdemo │ │ │ ├── MainActivity.java │ │ │ └── MainApplication.java │ │ └── res │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── babel.config.js ├── index.js ├── ios ├── Podfile ├── listDemo-tvOS │ └── Info.plist ├── listDemo-tvOSTests │ └── Info.plist ├── listDemo.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── listDemo-tvOS.xcscheme │ │ └── listDemo.xcscheme ├── listDemo │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Info.plist │ └── main.m └── listDemoTests │ ├── Info.plist │ └── listDemoTests.m ├── metro.config.js └── package.json /.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native-community', 4 | }; 5 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore unexpected extra "@providesModule" 9 | .*/node_modules/.*/node_modules/fbjs/.* 10 | 11 | ; Ignore duplicate module providers 12 | ; For RN Apps installed via npm, "Libraries" folder is inside 13 | ; "node_modules/react-native" but in the source repo it is in the root 14 | node_modules/react-native/Libraries/react-native/React.js 15 | 16 | ; Ignore polyfills 17 | node_modules/react-native/Libraries/polyfills/.* 18 | 19 | ; These should not be required directly 20 | ; require from fbjs/lib instead: require('fbjs/lib/warning') 21 | node_modules/warning/.* 22 | 23 | ; Flow doesn't support platforms 24 | .*/Libraries/Utilities/HMRLoadingView.js 25 | 26 | [untyped] 27 | .*/node_modules/@react-native-community/cli/.*/.* 28 | 29 | [include] 30 | 31 | [libs] 32 | node_modules/react-native/Libraries/react-native/react-native-interface.js 33 | node_modules/react-native/flow/ 34 | 35 | [options] 36 | emoji=true 37 | 38 | esproposal.optional_chaining=enable 39 | esproposal.nullish_coalescing=enable 40 | 41 | module.file_ext=.js 42 | module.file_ext=.json 43 | module.file_ext=.ios.js 44 | 45 | module.system=haste 46 | module.system.haste.use_name_reducers=true 47 | # get basename 48 | module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1' 49 | # strip .js or .js.flow suffix 50 | module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1' 51 | # strip .ios suffix 52 | module.system.haste.name_reducers='^\(.*\)\.ios$' -> '\1' 53 | module.system.haste.name_reducers='^\(.*\)\.android$' -> '\1' 54 | module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' 55 | module.system.haste.paths.blacklist=.*/__tests__/.* 56 | module.system.haste.paths.blacklist=.*/__mocks__/.* 57 | module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.* 58 | module.system.haste.paths.whitelist=/node_modules/react-native/RNTester/.* 59 | module.system.haste.paths.whitelist=/node_modules/react-native/IntegrationTests/.* 60 | module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/react-native/react-native-implementation.js 61 | module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.* 62 | 63 | munge_underscores=true 64 | 65 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' 66 | 67 | suppress_type=$FlowIssue 68 | suppress_type=$FlowFixMe 69 | suppress_type=$FlowFixMeProps 70 | suppress_type=$FlowFixMeState 71 | 72 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) 73 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ 74 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 75 | 76 | [lints] 77 | sketchy-null-number=warn 78 | sketchy-null-mixed=warn 79 | sketchy-number=warn 80 | untyped-type-import=warn 81 | nonstrict-import=warn 82 | deprecated-type=warn 83 | unsafe-getters-setters=warn 84 | inexact-spread=warn 85 | unnecessary-invariant=warn 86 | signature-verification-failure=warn 87 | deprecated-utility=error 88 | 89 | [strict] 90 | deprecated-type 91 | nonstrict-import 92 | sketchy-null 93 | unclear-type 94 | unsafe-getters-setters 95 | untyped-import 96 | untyped-type-import 97 | 98 | [version] 99 | ^0.98.0 100 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | 25 | # Android/IntelliJ 26 | # 27 | build/ 28 | .idea 29 | .gradle 30 | local.properties 31 | *.iml 32 | 33 | # node.js 34 | # 35 | node_modules/ 36 | npm-debug.log 37 | yarn-error.log 38 | 39 | # BUCK 40 | buck-out/ 41 | \.buckd/ 42 | *.keystore 43 | 44 | # fastlane 45 | # 46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 47 | # screenshots whenever they are needed. 48 | # For more information about the recommended setup visit: 49 | # https://docs.fastlane.tools/best-practices/source-control/ 50 | 51 | */fastlane/report.xml 52 | */fastlane/Preview.html 53 | */fastlane/screenshots 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # CocoaPods 59 | /ios/Pods/ 60 | -------------------------------------------------------------------------------- /.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /App.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Sample React Native App 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | * @flow 7 | */ 8 | 9 | import React, { Fragment } from 'react'; 10 | import CityList from './App/CityList' 11 | const App = () => { 12 | return ( 13 | 14 | ); 15 | }; 16 | 17 | export default App; 18 | -------------------------------------------------------------------------------- /App/CityList/Config/alphabeticalIndex.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | '热', 3 | 'A', 4 | 'B', 5 | 'C', 6 | 'D', 7 | 'E', 8 | 'F', 9 | 'G', 10 | 'H', 11 | 'J', 12 | 'K', 13 | 'L', 14 | 'M', 15 | 'N', 16 | 'P', 17 | 'Q', 18 | 'R', 19 | 'S', 20 | 'T', 21 | 'W', 22 | 'X', 23 | 'Y', 24 | 'Z', 25 | ] -------------------------------------------------------------------------------- /App/CityList/Config/cityIndex.js: -------------------------------------------------------------------------------- 1 | export default [{"sortLetters":"A","items":[{"label":"阿坝Aba0837","name":"阿坝","pinyin":"Aba","zip":"0837","sortLetters":"A","index":55},{"label":"阿克苏Akesu0997","name":"阿克苏","pinyin":"Akesu","zip":"0997","sortLetters":"A","index":56},{"label":"阿拉善盟Alashanmeng0483","name":"阿拉善盟","pinyin":"Alashanmeng","zip":"0483","sortLetters":"A","index":57},{"label":"阿勒泰Aletai0906","name":"阿勒泰","pinyin":"Aletai","zip":"0906","sortLetters":"A","index":58},{"label":"阿里Ali0897","name":"阿里","pinyin":"Ali","zip":"0897","sortLetters":"A","index":59},{"label":"安康Ankang0915","name":"安康","pinyin":"Ankang","zip":"0915","sortLetters":"A","index":60},{"label":"安庆Anqing0556","name":"安庆","pinyin":"Anqing","zip":"0556","sortLetters":"A","index":61},{"label":"鞍山Anshan0412","name":"鞍山","pinyin":"Anshan","zip":"0412","sortLetters":"A","index":62},{"label":"安顺Anshun0853","name":"安顺","pinyin":"Anshun","zip":"0853","sortLetters":"A","index":63},{"label":"安阳Anyang0372","name":"安阳","pinyin":"Anyang","zip":"0372","sortLetters":"A","index":64},{"label":"阿城Acheng0451","name":"阿城","pinyin":"Acheng","zip":"0451","sortLetters":"A","index":337},{"label":"安福Anfu0796","name":"安福","pinyin":"Anfu","zip":"0796","sortLetters":"A","index":338},{"label":"安吉Anji0572","name":"安吉","pinyin":"Anji","zip":"0572","sortLetters":"A","index":339},{"label":"安宁Anning0871","name":"安宁","pinyin":"Anning","zip":"0871","sortLetters":"A","index":340},{"label":"安丘Anqiu0536","name":"安丘","pinyin":"Anqiu","zip":"0536","sortLetters":"A","index":341},{"label":"安溪Anxi0595","name":"安溪","pinyin":"Anxi","zip":"0595","sortLetters":"A","index":342},{"label":"安义Anyi0791","name":"安义","pinyin":"Anyi","zip":"0791","sortLetters":"A","index":343},{"label":"安远Anyuan0797","name":"安远","pinyin":"Anyuan","zip":"0797","sortLetters":"A","index":344},{"label":"阿坝Aba0837","name":"阿坝","pinyin":"Aba","zip":"0837","sortLetters":"A","index":55}]},{"sortLetters":"B","items":[{"label":"白城Baicheng0436","name":"白城","pinyin":"Baicheng","zip":"0436","sortLetters":"B","index":65},{"label":"百色Baise0776","name":"百色","pinyin":"Baise","zip":"0776","sortLetters":"B","index":66},{"label":"白山Baishan0439","name":"白山","pinyin":"Baishan","zip":"0439","sortLetters":"B","index":67},{"label":"白银Baiyin0943","name":"白银","pinyin":"Baiyin","zip":"0943","sortLetters":"B","index":68},{"label":"蚌埠Bangbu0552","name":"蚌埠","pinyin":"Bangbu","zip":"0552","sortLetters":"B","index":69},{"label":"保定Baoding0312","name":"保定","pinyin":"Baoding","zip":"0312","sortLetters":"B","index":70},{"label":"宝鸡Baoji0917","name":"宝鸡","pinyin":"Baoji","zip":"0917","sortLetters":"B","index":71},{"label":"保山Baoshan0875","name":"保山","pinyin":"Baoshan","zip":"0875","sortLetters":"B","index":72},{"label":"包头Baotou0472","name":"包头","pinyin":"Baotou","zip":"0472","sortLetters":"B","index":73},{"label":"巴彦淖尔Bayannaoer0478","name":"巴彦淖尔","pinyin":"Bayannaoer","zip":"0478","sortLetters":"B","index":74},{"label":"巴音郭楞Bayinguoleng0996","name":"巴音郭楞","pinyin":"Bayinguoleng","zip":"0996","sortLetters":"B","index":75},{"label":"巴中Bazhong0827","name":"巴中","pinyin":"Bazhong","zip":"0827","sortLetters":"B","index":76},{"label":"北海Beihai0779","name":"北海","pinyin":"Beihai","zip":"0779","sortLetters":"B","index":77},{"label":"本溪Benxi0414","name":"本溪","pinyin":"Benxi","zip":"0414","sortLetters":"B","index":78},{"label":"毕节Bijie0857","name":"毕节","pinyin":"Bijie","zip":"0857","sortLetters":"B","index":79},{"label":"滨州Binzhou0543","name":"滨州","pinyin":"Binzhou","zip":"0543","sortLetters":"B","index":80},{"label":"博尔塔拉Boertala0909","name":"博尔塔拉","pinyin":"Boertala","zip":"0909","sortLetters":"B","index":81},{"label":"亳州Bozhou0558","name":"亳州","pinyin":"Bozhou","zip":"0558","sortLetters":"B","index":82},{"label":"宝应Baoying0514","name":"宝应","pinyin":"Baoying","zip":"0514","sortLetters":"B","index":345},{"label":"巴彦Bayan0451","name":"巴彦","pinyin":"Bayan","zip":"0451","sortLetters":"B","index":346},{"label":"滨海Binhai0515","name":"滨海","pinyin":"Binhai","zip":"0515","sortLetters":"B","index":347},{"label":"宾县Binxian0451","name":"宾县","pinyin":"Binxian","zip":"0451","sortLetters":"B","index":348},{"label":"宾阳Binyang0771","name":"宾阳","pinyin":"Binyang","zip":"0771","sortLetters":"B","index":349},{"label":"璧山Bishan023","name":"璧山","pinyin":"Bishan","zip":"023","sortLetters":"B","index":350},{"label":"博爱Boai0391","name":"博爱","pinyin":"Boai","zip":"0391","sortLetters":"B","index":351},{"label":"博罗Boluo0752","name":"博罗","pinyin":"Boluo","zip":"0752","sortLetters":"B","index":352},{"label":"博兴Boxing0543","name":"博兴","pinyin":"Boxing","zip":"0543","sortLetters":"B","index":353},{"label":"白城Baicheng0436","name":"白城","pinyin":"Baicheng","zip":"0436","sortLetters":"B","index":65}]},{"sortLetters":"C","items":[{"label":"昌都Changdu0895","name":"昌都","pinyin":"Changdu","zip":"0895","sortLetters":"C","index":85},{"label":"昌吉Changji0997","name":"昌吉","pinyin":"Changji","zip":"0997","sortLetters":"C","index":86},{"label":"长治Changzhi0355","name":"长治","pinyin":"Changzhi","zip":"0355","sortLetters":"C","index":87},{"label":"巢湖Chaohu0565","name":"巢湖","pinyin":"Chaohu","zip":"0565","sortLetters":"C","index":88},{"label":"朝阳Chaoyang0421","name":"朝阳","pinyin":"Chaoyang","zip":"0421","sortLetters":"C","index":89},{"label":"潮州Chaozhou0768","name":"潮州","pinyin":"Chaozhou","zip":"0768","sortLetters":"C","index":90},{"label":"承德Chengde0314","name":"承德","pinyin":"Chengde","zip":"0314","sortLetters":"C","index":91},{"label":"郴州Chenzhou0735","name":"郴州","pinyin":"Chenzhou","zip":"0735","sortLetters":"C","index":92},{"label":"赤峰Chifeng0476","name":"赤峰","pinyin":"Chifeng","zip":"0476","sortLetters":"C","index":93},{"label":"池州Chizhou0566","name":"池州","pinyin":"Chizhou","zip":"0566","sortLetters":"C","index":94},{"label":"崇左Chongzuo0771","name":"崇左","pinyin":"Chongzuo","zip":"0771","sortLetters":"C","index":95},{"label":"楚雄Chuxiong0875","name":"楚雄","pinyin":"Chuxiong","zip":"0875","sortLetters":"C","index":96},{"label":"滁州Chuzhou0550","name":"滁州","pinyin":"Chuzhou","zip":"0550","sortLetters":"C","index":97},{"label":"长春Changchun0431","name":"长春","pinyin":"Changchun","zip":"0431","sortLetters":"C","index":4},{"label":"长沙Changsha0731","name":"长沙","pinyin":"Changsha","zip":"0731","sortLetters":"C","index":5},{"label":"常州Changzhou0519","name":"常州","pinyin":"Changzhou","zip":"0519","sortLetters":"C","index":6},{"label":"成都Chengdu028","name":"成都","pinyin":"Chengdu","zip":"028","sortLetters":"C","index":7},{"label":"沧州Cangzhou0317","name":"沧州","pinyin":"Cangzhou","zip":"0317","sortLetters":"C","index":83},{"label":"常德Changde0736","name":"常德","pinyin":"Changde","zip":"0736","sortLetters":"C","index":84},{"label":"苍南Cangnan0577","name":"苍南","pinyin":"Cangnan","zip":"0577","sortLetters":"C","index":354},{"label":"苍山Cangshan0539","name":"苍山","pinyin":"Cangshan","zip":"0539","sortLetters":"C","index":355},{"label":"曹县Caoxian0530","name":"曹县","pinyin":"Caoxian","zip":"0530","sortLetters":"C","index":356},{"label":"长岛Changdao0535","name":"长岛","pinyin":"Changdao","zip":"0535","sortLetters":"C","index":357},{"label":"长丰Changfeng0551","name":"长丰","pinyin":"Changfeng","zip":"0551","sortLetters":"C","index":358},{"label":"长海Changhai0411","name":"长海","pinyin":"Changhai","zip":"0411","sortLetters":"C","index":359},{"label":"长乐Changle0591","name":"长乐","pinyin":"Changle","zip":"0591","sortLetters":"C","index":360},{"label":"昌乐Changle0536","name":"昌乐","pinyin":"Changle","zip":"0536","sortLetters":"C","index":361},{"label":"常山Changshan0570","name":"常山","pinyin":"Changshan","zip":"0570","sortLetters":"C","index":362},{"label":"常熟Changshu0512","name":"常熟","pinyin":"Changshu","zip":"0512","sortLetters":"C","index":363},{"label":"长泰Changtai0596","name":"长泰","pinyin":"Changtai","zip":"0596","sortLetters":"C","index":364},{"label":"长汀Changting0597","name":"长汀","pinyin":"Changting","zip":"0597","sortLetters":"C","index":365},{"label":"长兴Changxing0572","name":"长兴","pinyin":"Changxing","zip":"0572","sortLetters":"C","index":366},{"label":"昌邑Changyi0536","name":"昌邑","pinyin":"Changyi","zip":"0536","sortLetters":"C","index":367},{"label":"潮安Chaoan0768","name":"潮安","pinyin":"Chaoan","zip":"0768","sortLetters":"C","index":368},{"label":"呈贡Chenggong0871","name":"呈贡","pinyin":"Chenggong","zip":"0871","sortLetters":"C","index":369},{"label":"城口Chengkou023","name":"城口","pinyin":"Chengkou","zip":"023","sortLetters":"C","index":370},{"label":"成武Chengwu0530","name":"成武","pinyin":"Chengwu","zip":"0530","sortLetters":"C","index":371},{"label":"茌平Chiping0635","name":"茌平","pinyin":"Chiping","zip":"0635","sortLetters":"C","index":372},{"label":"崇仁Chongren0794","name":"崇仁","pinyin":"Chongren","zip":"0794","sortLetters":"C","index":373},{"label":"崇义Chongyi0797","name":"崇义","pinyin":"Chongyi","zip":"0797","sortLetters":"C","index":374},{"label":"崇州Chongzhou028","name":"崇州","pinyin":"Chongzhou","zip":"028","sortLetters":"C","index":375},{"label":"淳安Chunan0571","name":"淳安","pinyin":"Chunan","zip":"0571","sortLetters":"C","index":376},{"label":"慈溪Cixi0574","name":"慈溪","pinyin":"Cixi","zip":"0574","sortLetters":"C","index":377},{"label":"从化Conghua020","name":"从化","pinyin":"Conghua","zip":"020","sortLetters":"C","index":378},{"label":"枞阳Congyang0556","name":"枞阳","pinyin":"Congyang","zip":"0556","sortLetters":"C","index":379},{"label":"长春Changchun0431","name":"长春","pinyin":"Changchun","zip":"0431","sortLetters":"C","index":4},{"label":"重庆Chongqing023","name":"重庆","pinyin":"Chongqing","zip":"023","sortLetters":"C","index":1}]},{"sortLetters":"D","items":[{"label":"东莞Dongguan0769","name":"东莞","pinyin":"Dongguan","zip":"0769","sortLetters":"D","index":9},{"label":"丹东Dandong0415","name":"丹东","pinyin":"Dandong","zip":"0415","sortLetters":"D","index":99},{"label":"大庆Daqing0459","name":"大庆","pinyin":"Daqing","zip":"0459","sortLetters":"D","index":100},{"label":"大同Datong0352","name":"大同","pinyin":"Datong","zip":"0352","sortLetters":"D","index":101},{"label":"大兴安岭Daxinganling0457","name":"大兴安岭","pinyin":"Daxinganling","zip":"0457","sortLetters":"D","index":102},{"label":"达州Dazhou0818","name":"达州","pinyin":"Dazhou","zip":"0818","sortLetters":"D","index":103},{"label":"德宏Dehong0692","name":"德宏","pinyin":"Dehong","zip":"0692","sortLetters":"D","index":104},{"label":"德阳Deyang0838","name":"德阳","pinyin":"Deyang","zip":"0838","sortLetters":"D","index":105},{"label":"德州Dezhou0534","name":"德州","pinyin":"Dezhou","zip":"0534","sortLetters":"D","index":106},{"label":"定西Dingxi0932","name":"定西","pinyin":"Dingxi","zip":"0932","sortLetters":"D","index":107},{"label":"迪庆Diqing0887","name":"迪庆","pinyin":"Diqing","zip":"0887","sortLetters":"D","index":108},{"label":"东营Dongying0546","name":"东营","pinyin":"Dongying","zip":"0546","sortLetters":"D","index":109},{"label":"大连Dalian0411","name":"大连","pinyin":"Dalian","zip":"0411","sortLetters":"D","index":8},{"label":"大丰Dafeng0515","name":"大丰","pinyin":"Dafeng","zip":"0515","sortLetters":"D","index":380},{"label":"岱山Daishan0580","name":"岱山","pinyin":"Daishan","zip":"0580","sortLetters":"D","index":381},{"label":"砀山Dangshan0557","name":"砀山","pinyin":"Dangshan","zip":"0557","sortLetters":"D","index":382},{"label":"当涂Dangtu0555","name":"当涂","pinyin":"Dangtu","zip":"0555","sortLetters":"D","index":383},{"label":"单县Danxian0530","name":"单县","pinyin":"Danxian","zip":"0530","sortLetters":"D","index":384},{"label":"丹阳Danyang0511","name":"丹阳","pinyin":"Danyang","zip":"0511","sortLetters":"D","index":385},{"label":"大埔Dapu0753","name":"大埔","pinyin":"Dapu","zip":"0753","sortLetters":"D","index":386},{"label":"大田Datian0598","name":"大田","pinyin":"Datian","zip":"0598","sortLetters":"D","index":387},{"label":"大邑Dayi028","name":"大邑","pinyin":"Dayi","zip":"028","sortLetters":"D","index":388},{"label":"大余Dayu0797","name":"大余","pinyin":"Dayu","zip":"0797","sortLetters":"D","index":389},{"label":"大足Dazu023","name":"大足","pinyin":"Dazu","zip":"023","sortLetters":"D","index":390},{"label":"德安Dean0792","name":"德安","pinyin":"Dean","zip":"0792","sortLetters":"D","index":391},{"label":"德化Dehua0595","name":"德化","pinyin":"Dehua","zip":"0595","sortLetters":"D","index":392},{"label":"德惠Dehui0431","name":"德惠","pinyin":"Dehui","zip":"0431","sortLetters":"D","index":393},{"label":"登封Dengfeng0371","name":"登封","pinyin":"Dengfeng","zip":"0371","sortLetters":"D","index":394},{"label":"德清Deqing0572","name":"德清","pinyin":"Deqing","zip":"0572","sortLetters":"D","index":395},{"label":"德庆Deqing0758","name":"德庆","pinyin":"Deqing","zip":"0758","sortLetters":"D","index":396},{"label":"德兴Dexing0793","name":"德兴","pinyin":"Dexing","zip":"0793","sortLetters":"D","index":397},{"label":"电白Dianbai0668","name":"电白","pinyin":"Dianbai","zip":"0668","sortLetters":"D","index":398},{"label":"垫江Dianjiang023","name":"垫江","pinyin":"Dianjiang","zip":"023","sortLetters":"D","index":399},{"label":"定南Dingnan0797","name":"定南","pinyin":"Dingnan","zip":"0797","sortLetters":"D","index":400},{"label":"定陶Dingtao0530","name":"定陶","pinyin":"Dingtao","zip":"0530","sortLetters":"D","index":401},{"label":"定远Dingyuan0550","name":"定远","pinyin":"Dingyuan","zip":"0550","sortLetters":"D","index":402},{"label":"东阿Donga0635","name":"东阿","pinyin":"Donga","zip":"0635","sortLetters":"D","index":403},{"label":"东海Donghai0518","name":"东海","pinyin":"Donghai","zip":"0518","sortLetters":"D","index":404},{"label":"东明Dongming0530","name":"东明","pinyin":"Dongming","zip":"0530","sortLetters":"D","index":405},{"label":"东平Dongping0538","name":"东平","pinyin":"Dongping","zip":"0538","sortLetters":"D","index":406},{"label":"东山Dongshan0596","name":"东山","pinyin":"Dongshan","zip":"0596","sortLetters":"D","index":407},{"label":"东台Dongtai0515","name":"东台","pinyin":"Dongtai","zip":"0515","sortLetters":"D","index":408},{"label":"洞头Dongtou0577","name":"洞头","pinyin":"Dongtou","zip":"0577","sortLetters":"D","index":409},{"label":"东乡Dongxiang0794","name":"东乡","pinyin":"Dongxiang","zip":"0794","sortLetters":"D","index":410},{"label":"东阳Dongyang0579","name":"东阳","pinyin":"Dongyang","zip":"0579","sortLetters":"D","index":411},{"label":"东源Dongyuan0762","name":"东源","pinyin":"Dongyuan","zip":"0762","sortLetters":"D","index":412},{"label":"东至Dongzhi0566","name":"东至","pinyin":"Dongzhi","zip":"0566","sortLetters":"D","index":413},{"label":"都昌Duchang0792","name":"都昌","pinyin":"Duchang","zip":"0792","sortLetters":"D","index":414},{"label":"都江堰Dujiangyan028","name":"都江堰","pinyin":"Dujiangyan","zip":"028","sortLetters":"D","index":415},{"label":"大连Dalian0411","name":"大连","pinyin":"Dalian","zip":"0411","sortLetters":"D","index":8},{"label":"丹东Dandong0415","name":"丹东","pinyin":"Dandong","zip":"0415","sortLetters":"D","index":99}]},{"sortLetters":"E","items":[{"label":"鄂州Ezhou0711","name":"鄂州","pinyin":"Ezhou","zip":"0711","sortLetters":"E","index":112},{"label":"恩施Enshi0718","name":"恩施","pinyin":"Enshi","zip":"0718","sortLetters":"E","index":111},{"label":"恩平Enping0750","name":"恩平","pinyin":"Enping","zip":"0750","sortLetters":"E","index":416}]},{"sortLetters":"F","items":[{"label":"抚州Fuzhou0794","name":"抚州","pinyin":"Fuzhou","zip":"0794","sortLetters":"F","index":117},{"label":"福州Fuzhou0591","name":"福州","pinyin":"Fuzhou","zip":"0591","sortLetters":"F","index":11},{"label":"防城港Fangchenggang0770","name":"防城港","pinyin":"Fangchenggang","zip":"0770","sortLetters":"F","index":113},{"label":"抚顺Fushun0413","name":"抚顺","pinyin":"Fushun","zip":"0413","sortLetters":"F","index":114},{"label":"阜新Fuxin0418","name":"阜新","pinyin":"Fuxin","zip":"0418","sortLetters":"F","index":115},{"label":"阜阳Fuyang0558","name":"阜阳","pinyin":"Fuyang","zip":"0558","sortLetters":"F","index":116},{"label":"法库Faku024","name":"法库","pinyin":"Faku","zip":"024","sortLetters":"F","index":417},{"label":"繁昌Fanchang0553","name":"繁昌","pinyin":"Fanchang","zip":"0553","sortLetters":"F","index":418},{"label":"方正Fangzheng0451","name":"方正","pinyin":"Fangzheng","zip":"0451","sortLetters":"F","index":419},{"label":"肥城Feicheng0538","name":"肥城","pinyin":"Feicheng","zip":"0538","sortLetters":"F","index":420},{"label":"肥东Feidong0551","name":"肥东","pinyin":"Feidong","zip":"0551","sortLetters":"F","index":421},{"label":"肥西Feixi0551","name":"肥西","pinyin":"Feixi","zip":"0551","sortLetters":"F","index":422},{"label":"费县Feixian0539","name":"费县","pinyin":"Feixian","zip":"0539","sortLetters":"F","index":423},{"label":"丰城Fengcheng0795","name":"丰城","pinyin":"Fengcheng","zip":"0795","sortLetters":"F","index":424},{"label":"丰都Fengdu023","name":"丰都","pinyin":"Fengdu","zip":"023","sortLetters":"F","index":425},{"label":"奉化Fenghua0574","name":"奉化","pinyin":"Fenghua","zip":"0574","sortLetters":"F","index":426},{"label":"奉节Fengjie023","name":"奉节","pinyin":"Fengjie","zip":"023","sortLetters":"F","index":427},{"label":"封开Fengkai0758","name":"封开","pinyin":"Fengkai","zip":"0758","sortLetters":"F","index":428},{"label":"丰顺Fengshun0753","name":"丰顺","pinyin":"Fengshun","zip":"0753","sortLetters":"F","index":429},{"label":"凤台Fengtai0554","name":"凤台","pinyin":"Fengtai","zip":"0554","sortLetters":"F","index":430},{"label":"丰县Fengxian0516","name":"丰县","pinyin":"Fengxian","zip":"0516","sortLetters":"F","index":431},{"label":"奉新Fengxin0795","name":"奉新","pinyin":"Fengxin","zip":"0795","sortLetters":"F","index":432},{"label":"凤阳Fengyang0550","name":"凤阳","pinyin":"Fengyang","zip":"0550","sortLetters":"F","index":433},{"label":"分宜Fenyi0790","name":"分宜","pinyin":"Fenyi","zip":"0790","sortLetters":"F","index":434},{"label":"佛冈Fogang0763","name":"佛冈","pinyin":"Fogang","zip":"0763","sortLetters":"F","index":435},{"label":"福安Fuan0593","name":"福安","pinyin":"Fuan","zip":"0593","sortLetters":"F","index":436},{"label":"福鼎Fuding0593","name":"福鼎","pinyin":"Fuding","zip":"0593","sortLetters":"F","index":437},{"label":"浮梁Fuliang0798","name":"浮梁","pinyin":"Fuliang","zip":"0798","sortLetters":"F","index":438},{"label":"富民Fumin0871","name":"富民","pinyin":"Fumin","zip":"0871","sortLetters":"F","index":439},{"label":"阜南Funan0558","name":"阜南","pinyin":"Funan","zip":"0558","sortLetters":"F","index":440},{"label":"阜宁Funing0515","name":"阜宁","pinyin":"Funing","zip":"0515","sortLetters":"F","index":441},{"label":"福清Fuqing0591","name":"福清","pinyin":"Fuqing","zip":"0591","sortLetters":"F","index":442},{"label":"富阳Fuyang0571","name":"富阳","pinyin":"Fuyang","zip":"0571","sortLetters":"F","index":443},{"label":"福州Fuzhou0591","name":"福州","pinyin":"Fuzhou","zip":"0591","sortLetters":"F","index":11}]},{"sortLetters":"G","items":[{"label":"广安Guangan0826","name":"广安","pinyin":"Guangan","zip":"0826","sortLetters":"G","index":121},{"label":"广元Guangyuan0839","name":"广元","pinyin":"Guangyuan","zip":"0839","sortLetters":"G","index":122},{"label":"贵港Guigang0775","name":"贵港","pinyin":"Guigang","zip":"0775","sortLetters":"G","index":123},{"label":"桂林Guilin0773","name":"桂林","pinyin":"Guilin","zip":"0773","sortLetters":"G","index":124},{"label":"果洛Guoluo0975","name":"果洛","pinyin":"Guoluo","zip":"0975","sortLetters":"G","index":125},{"label":"固原Guyuan0954","name":"固原","pinyin":"Guyuan","zip":"0954","sortLetters":"G","index":126},{"label":"赣州Ganzhou0797","name":"赣州","pinyin":"Ganzhou","zip":"0797","sortLetters":"G","index":119},{"label":"广州Guangzhou020","name":"广州","pinyin":"Guangzhou","zip":"020","sortLetters":"G","index":12},{"label":"贵阳Guiyang0851","name":"贵阳","pinyin":"Guiyang","zip":"0851","sortLetters":"G","index":13},{"label":"甘孜Ganzi0836","name":"甘孜","pinyin":"Ganzi","zip":"0836","sortLetters":"G","index":120},{"label":"赣县Ganxian0797","name":"赣县","pinyin":"Ganxian","zip":"0797","sortLetters":"G","index":444},{"label":"赣榆Ganyu0518","name":"赣榆","pinyin":"Ganyu","zip":"0518","sortLetters":"G","index":445},{"label":"高安Gaoan0795","name":"高安","pinyin":"Gaoan","zip":"0795","sortLetters":"G","index":446},{"label":"藁城Gaocheng0311","name":"藁城","pinyin":"Gaocheng","zip":"0311","sortLetters":"G","index":447},{"label":"高淳Gaochun025","name":"高淳","pinyin":"Gaochun","zip":"025","sortLetters":"G","index":448},{"label":"皋兰Gaolan0931","name":"皋兰","pinyin":"Gaolan","zip":"0931","sortLetters":"G","index":449},{"label":"高陵Gaoling029","name":"高陵","pinyin":"Gaoling","zip":"029","sortLetters":"G","index":450},{"label":"高密Gaomi0536","name":"高密","pinyin":"Gaomi","zip":"0536","sortLetters":"G","index":451},{"label":"高青Gaoqing0533","name":"高青","pinyin":"Gaoqing","zip":"0533","sortLetters":"G","index":452},{"label":"高唐Gaotang0635","name":"高唐","pinyin":"Gaotang","zip":"0635","sortLetters":"G","index":453},{"label":"高要Gaoyao0758","name":"高要","pinyin":"Gaoyao","zip":"0758","sortLetters":"G","index":454},{"label":"高邑Gaoyi0311","name":"高邑","pinyin":"Gaoyi","zip":"0311","sortLetters":"G","index":455},{"label":"高邮Gaoyou0514","name":"高邮","pinyin":"Gaoyou","zip":"0514","sortLetters":"G","index":456},{"label":"高州Gaozhou0668","name":"高州","pinyin":"Gaozhou","zip":"0668","sortLetters":"G","index":457},{"label":"巩义Gongyi0371","name":"巩义","pinyin":"Gongyi","zip":"0371","sortLetters":"G","index":458},{"label":"广昌Guangchang0794","name":"广昌","pinyin":"Guangchang","zip":"0794","sortLetters":"G","index":459},{"label":"广德Guangde0563","name":"广德","pinyin":"Guangde","zip":"0563","sortLetters":"G","index":460},{"label":"广丰Guangfeng0793","name":"广丰","pinyin":"Guangfeng","zip":"0793","sortLetters":"G","index":461},{"label":"广宁Guangning0758","name":"广宁","pinyin":"Guangning","zip":"0758","sortLetters":"G","index":462},{"label":"广饶Guangrao0546","name":"广饶","pinyin":"Guangrao","zip":"0546","sortLetters":"G","index":463},{"label":"光泽Guangze0599","name":"光泽","pinyin":"Guangze","zip":"0599","sortLetters":"G","index":464},{"label":"灌南Guannan0518","name":"灌南","pinyin":"Guannan","zip":"0518","sortLetters":"G","index":465},{"label":"冠县Guanxian0635","name":"冠县","pinyin":"Guanxian","zip":"0635","sortLetters":"G","index":466},{"label":"灌云Guanyun0518","name":"灌云","pinyin":"Guanyun","zip":"0518","sortLetters":"G","index":467},{"label":"贵溪Guixi0701","name":"贵溪","pinyin":"Guixi","zip":"0701","sortLetters":"G","index":468},{"label":"古田Gutian0593","name":"古田","pinyin":"Gutian","zip":"0593","sortLetters":"G","index":469},{"label":"固镇Guzhen0552","name":"固镇","pinyin":"Guzhen","zip":"0552","sortLetters":"G","index":470}]},{"sortLetters":"H","items":[{"label":"哈尔滨Haerbin0451","name":"哈尔滨","pinyin":"Haerbin","zip":"0451","sortLetters":"H","index":14},{"label":"海口Haikou0898","name":"海口","pinyin":"Haikou","zip":"0898","sortLetters":"H","index":15},{"label":"邯郸Handan0310","name":"邯郸","pinyin":"Handan","zip":"0310","sortLetters":"H","index":16},{"label":"杭州Hangzhou0571","name":"杭州","pinyin":"Hangzhou","zip":"0571","sortLetters":"H","index":17},{"label":"合肥Hefei0551","name":"合肥","pinyin":"Hefei","zip":"0551","sortLetters":"H","index":18},{"label":"海北Haibei0970","name":"海北","pinyin":"Haibei","zip":"0970","sortLetters":"H","index":127},{"label":"海东Haidong0972","name":"海东","pinyin":"Haidong","zip":"0972","sortLetters":"H","index":128},{"label":"海南Hainan0974","name":"海南","pinyin":"Hainan","zip":"0974","sortLetters":"H","index":129},{"label":"海西Haixi0977","name":"海西","pinyin":"Haixi","zip":"0977","sortLetters":"H","index":130},{"label":"哈密Hami0902","name":"哈密","pinyin":"Hami","zip":"0902","sortLetters":"H","index":131},{"label":"汉中Hanzhong0916","name":"汉中","pinyin":"Hanzhong","zip":"0916","sortLetters":"H","index":132},{"label":"鹤壁Hebi0392","name":"鹤壁","pinyin":"Hebi","zip":"0392","sortLetters":"H","index":133},{"label":"河池Hechi0778","name":"河池","pinyin":"Hechi","zip":"0778","sortLetters":"H","index":134},{"label":"鹤岗Hegang0468","name":"鹤岗","pinyin":"Hegang","zip":"0468","sortLetters":"H","index":135},{"label":"黑河Heihe0456","name":"黑河","pinyin":"Heihe","zip":"0456","sortLetters":"H","index":136},{"label":"衡水Hengshui0318","name":"衡水","pinyin":"Hengshui","zip":"0318","sortLetters":"H","index":137},{"label":"衡阳Hengyang0734","name":"衡阳","pinyin":"Hengyang","zip":"0734","sortLetters":"H","index":138},{"label":"和田地Hetiandi0903","name":"和田地","pinyin":"Hetiandi","zip":"0903","sortLetters":"H","index":139},{"label":"河源Heyuan0762","name":"河源","pinyin":"Heyuan","zip":"0762","sortLetters":"H","index":140},{"label":"菏泽Heze0530","name":"菏泽","pinyin":"Heze","zip":"0530","sortLetters":"H","index":141},{"label":"贺州Hezhou0774","name":"贺州","pinyin":"Hezhou","zip":"0774","sortLetters":"H","index":142},{"label":"红河Honghe0873","name":"红河","pinyin":"Honghe","zip":"0873","sortLetters":"H","index":143},{"label":"淮安Huaian0517","name":"淮安","pinyin":"Huaian","zip":"0517","sortLetters":"H","index":144},{"label":"淮北Huaibei0561","name":"淮北","pinyin":"Huaibei","zip":"0561","sortLetters":"H","index":145},{"label":"怀化Huaihua0745","name":"怀化","pinyin":"Huaihua","zip":"0745","sortLetters":"H","index":146},{"label":"淮南Huainan0554","name":"淮南","pinyin":"Huainan","zip":"0554","sortLetters":"H","index":147},{"label":"黄冈Huanggang0713","name":"黄冈","pinyin":"Huanggang","zip":"0713","sortLetters":"H","index":148},{"label":"黄南Huangnan0973","name":"黄南","pinyin":"Huangnan","zip":"0973","sortLetters":"H","index":149},{"label":"黄山Huangshan0559","name":"黄山","pinyin":"Huangshan","zip":"0559","sortLetters":"H","index":150},{"label":"黄石Huangshi0714","name":"黄石","pinyin":"Huangshi","zip":"0714","sortLetters":"H","index":151},{"label":"呼和浩特Huhehaote0471","name":"呼和浩特","pinyin":"Huhehaote","zip":"0471","sortLetters":"H","index":152},{"label":"葫芦岛Huludao0429","name":"葫芦岛","pinyin":"Huludao","zip":"0429","sortLetters":"H","index":153},{"label":"呼伦贝尔Hulunbeier0470","name":"呼伦贝尔","pinyin":"Hulunbeier","zip":"0470","sortLetters":"H","index":154},{"label":"湖州Huzhou0572","name":"湖州","pinyin":"Huzhou","zip":"0572","sortLetters":"H","index":155},{"label":"海安Haian0513","name":"海安","pinyin":"Haian","zip":"0513","sortLetters":"H","index":471},{"label":"海丰Haifeng0660","name":"海丰","pinyin":"Haifeng","zip":"0660","sortLetters":"H","index":472},{"label":"海门Haimen0513","name":"海门","pinyin":"Haimen","zip":"0513","sortLetters":"H","index":473},{"label":"海宁Haining0573","name":"海宁","pinyin":"Haining","zip":"0573","sortLetters":"H","index":474},{"label":"海盐Haiyan0573","name":"海盐","pinyin":"Haiyan","zip":"0573","sortLetters":"H","index":475},{"label":"海阳Haiyang0535","name":"海阳","pinyin":"Haiyang","zip":"0535","sortLetters":"H","index":476},{"label":"含山Hanshan0565","name":"含山","pinyin":"Hanshan","zip":"0565","sortLetters":"H","index":477},{"label":"合川Hechuan023","name":"合川","pinyin":"Hechuan","zip":"023","sortLetters":"H","index":478},{"label":"横峰Hengfeng0793","name":"横峰","pinyin":"Hengfeng","zip":"0793","sortLetters":"H","index":479},{"label":"横县Hengxian0771","name":"横县","pinyin":"Hengxian","zip":"0771","sortLetters":"H","index":480},{"label":"和平Heping0762","name":"和平","pinyin":"Heping","zip":"0762","sortLetters":"H","index":481},{"label":"鹤山Heshan0750","name":"鹤山","pinyin":"Heshan","zip":"0750","sortLetters":"H","index":482},{"label":"和县Hexian0565","name":"和县","pinyin":"Hexian","zip":"0565","sortLetters":"H","index":483},{"label":"洪泽Hongze0517","name":"洪泽","pinyin":"Hongze","zip":"0517","sortLetters":"H","index":484},{"label":"华安Huaan0596","name":"华安","pinyin":"Huaan","zip":"0596","sortLetters":"H","index":485},{"label":"桦甸Huadian0423","name":"桦甸","pinyin":"Huadian","zip":"0423","sortLetters":"H","index":486},{"label":"怀集Huaiji0758","name":"怀集","pinyin":"Huaiji","zip":"0758","sortLetters":"H","index":487},{"label":"怀宁Huaining0556","name":"怀宁","pinyin":"Huaining","zip":"0556","sortLetters":"H","index":488},{"label":"怀远Huaiyuan0552","name":"怀远","pinyin":"Huaiyuan","zip":"0552","sortLetters":"H","index":489},{"label":"桓台Huantai0533","name":"桓台","pinyin":"Huantai","zip":"0533","sortLetters":"H","index":490},{"label":"化州Huazhou0668","name":"化州","pinyin":"Huazhou","zip":"0668","sortLetters":"H","index":491},{"label":"惠安Huian0595","name":"惠安","pinyin":"Huian","zip":"0595","sortLetters":"H","index":492},{"label":"会昌Huichang0797","name":"会昌","pinyin":"Huichang","zip":"0797","sortLetters":"H","index":493},{"label":"惠东Huidong0752","name":"惠东","pinyin":"Huidong","zip":"0752","sortLetters":"H","index":494},{"label":"惠来Huilai0663","name":"惠来","pinyin":"Huilai","zip":"0663","sortLetters":"H","index":495},{"label":"惠民Huimin0543","name":"惠民","pinyin":"Huimin","zip":"0543","sortLetters":"H","index":496},{"label":"湖口Hukou0792","name":"湖口","pinyin":"Hukou","zip":"0792","sortLetters":"H","index":497},{"label":"呼兰Hulan0451","name":"呼兰","pinyin":"Hulan","zip":"0451","sortLetters":"H","index":498},{"label":"霍邱Huoqiu0564","name":"霍邱","pinyin":"Huoqiu","zip":"0564","sortLetters":"H","index":499},{"label":"霍山Huoshan0564","name":"霍山","pinyin":"Huoshan","zip":"0564","sortLetters":"H","index":500},{"label":"户县Huxian029","name":"户县","pinyin":"Huxian","zip":"029","sortLetters":"H","index":501},{"label":"哈尔滨Haerbin0451","name":"哈尔滨","pinyin":"Haerbin","zip":"0451","sortLetters":"H","index":14}]},{"sortLetters":"J","items":[{"label":"嘉兴Jiaxing0573","name":"嘉兴","pinyin":"Jiaxing","zip":"0573","sortLetters":"J","index":21},{"label":"吉林Jilin0423","name":"吉林","pinyin":"Jilin","zip":"0423","sortLetters":"J","index":22},{"label":"济南Jinan0531","name":"济南","pinyin":"Jinan","zip":"0531","sortLetters":"J","index":23},{"label":"佳木斯Jiamusi0454","name":"佳木斯","pinyin":"Jiamusi","zip":"0454","sortLetters":"J","index":156},{"label":"江门Jiangmen0750","name":"江门","pinyin":"Jiangmen","zip":"0750","sortLetters":"J","index":157},{"label":"吉安Jian0796","name":"吉安","pinyin":"Jian","zip":"0796","sortLetters":"J","index":158},{"label":"嘉峪关Jiayuguan0937","name":"嘉峪关","pinyin":"Jiayuguan","zip":"0937","sortLetters":"J","index":159},{"label":"揭阳Jieyang0663","name":"揭阳","pinyin":"Jieyang","zip":"0663","sortLetters":"J","index":160},{"label":"金昌Jinchang0935","name":"金昌","pinyin":"Jinchang","zip":"0935","sortLetters":"J","index":161},{"label":"晋城Jincheng0356","name":"晋城","pinyin":"Jincheng","zip":"0356","sortLetters":"J","index":162},{"label":"景德镇Jingdezhen0798","name":"景德镇","pinyin":"Jingdezhen","zip":"0798","sortLetters":"J","index":163},{"label":"荆门Jingmen0724","name":"荆门","pinyin":"Jingmen","zip":"0724","sortLetters":"J","index":164},{"label":"荆州Jingzhou0716","name":"荆州","pinyin":"Jingzhou","zip":"0716","sortLetters":"J","index":165},{"label":"金华Jinhua0579","name":"金华","pinyin":"Jinhua","zip":"0579","sortLetters":"J","index":166},{"label":"济宁Jining0537","name":"济宁","pinyin":"Jining","zip":"0537","sortLetters":"J","index":167},{"label":"晋中Jinzhong0354","name":"晋中","pinyin":"Jinzhong","zip":"0354","sortLetters":"J","index":168},{"label":"锦州Jinzhou0416","name":"锦州","pinyin":"Jinzhou","zip":"0416","sortLetters":"J","index":169},{"label":"九江Jiujiang0792","name":"九江","pinyin":"Jiujiang","zip":"0792","sortLetters":"J","index":170},{"label":"酒泉Jiuquan0937","name":"酒泉","pinyin":"Jiuquan","zip":"0937","sortLetters":"J","index":171},{"label":"鸡西Jixi0467","name":"鸡西","pinyin":"Jixi","zip":"0467","sortLetters":"J","index":172},{"label":"建德Jiande0571","name":"建德","pinyin":"Jiande","zip":"0571","sortLetters":"J","index":502},{"label":"江都Jiangdu0514","name":"江都","pinyin":"Jiangdu","zip":"0514","sortLetters":"J","index":503},{"label":"江津Jiangjin023","name":"江津","pinyin":"Jiangjin","zip":"023","sortLetters":"J","index":504},{"label":"将乐Jiangle0598","name":"将乐","pinyin":"Jiangle","zip":"0598","sortLetters":"J","index":505},{"label":"江山Jiangshan0570","name":"江山","pinyin":"Jiangshan","zip":"0570","sortLetters":"J","index":506},{"label":"姜堰Jiangyan0523","name":"姜堰","pinyin":"Jiangyan","zip":"0523","sortLetters":"J","index":507},{"label":"江阴Jiangyin0510","name":"江阴","pinyin":"Jiangyin","zip":"0510","sortLetters":"J","index":508},{"label":"建湖Jianhu0515","name":"建湖","pinyin":"Jianhu","zip":"0515","sortLetters":"J","index":509},{"label":"建宁Jianning0598","name":"建宁","pinyin":"Jianning","zip":"0598","sortLetters":"J","index":510},{"label":"建瓯Jianou0599","name":"建瓯","pinyin":"Jianou","zip":"0599","sortLetters":"J","index":511},{"label":"建阳Jianyang0599","name":"建阳","pinyin":"Jianyang","zip":"0599","sortLetters":"J","index":512},{"label":"吉安Jian0796","name":"吉安","pinyin":"Jian","zip":"0796","sortLetters":"J","index":513},{"label":"蛟河Jiaohe0423","name":"蛟河","pinyin":"Jiaohe","zip":"0423","sortLetters":"J","index":514},{"label":"蕉岭Jiaoling0753","name":"蕉岭","pinyin":"Jiaoling","zip":"0753","sortLetters":"J","index":515},{"label":"胶南Jiaonan0532","name":"胶南","pinyin":"Jiaonan","zip":"0532","sortLetters":"J","index":516},{"label":"胶州Jiaozhou0532","name":"胶州","pinyin":"Jiaozhou","zip":"0532","sortLetters":"J","index":517},{"label":"嘉善Jiashan0573","name":"嘉善","pinyin":"Jiashan","zip":"0573","sortLetters":"J","index":518},{"label":"嘉祥Jiaxiang0537","name":"嘉祥","pinyin":"Jiaxiang","zip":"0537","sortLetters":"J","index":519},{"label":"揭东Jiedong0663","name":"揭东","pinyin":"Jiedong","zip":"0663","sortLetters":"J","index":520},{"label":"界首Jieshou0558","name":"界首","pinyin":"Jieshou","zip":"0558","sortLetters":"J","index":521},{"label":"揭西Jiexi0663","name":"揭西","pinyin":"Jiexi","zip":"0663","sortLetters":"J","index":522},{"label":"即墨Jimo0532","name":"即墨","pinyin":"Jimo","zip":"0532","sortLetters":"J","index":523},{"label":"靖安Jingan0795","name":"靖安","pinyin":"Jingan","zip":"0795","sortLetters":"J","index":524},{"label":"旌德Jingde0563","name":"旌德","pinyin":"Jingde","zip":"0563","sortLetters":"J","index":525},{"label":"井冈山Jinggangshan0796","name":"井冈山","pinyin":"Jinggangshan","zip":"0796","sortLetters":"J","index":526},{"label":"靖江Jingjiang0523","name":"靖江","pinyin":"Jingjiang","zip":"0523","sortLetters":"J","index":527},{"label":"景宁Jingning0578","name":"景宁","pinyin":"Jingning","zip":"0578","sortLetters":"J","index":528},{"label":"泾县Jingxian0563","name":"泾县","pinyin":"Jingxian","zip":"0563","sortLetters":"J","index":529},{"label":"井陉Jingxing0311","name":"井陉","pinyin":"Jingxing","zip":"0311","sortLetters":"J","index":530},{"label":"金湖Jinhu0517","name":"金湖","pinyin":"Jinhu","zip":"0517","sortLetters":"J","index":531},{"label":"晋江Jinjiang0595","name":"晋江","pinyin":"Jinjiang","zip":"0595","sortLetters":"J","index":532},{"label":"金门Jinmen0595","name":"金门","pinyin":"Jinmen","zip":"0595","sortLetters":"J","index":533},{"label":"晋宁Jinning0871","name":"晋宁","pinyin":"Jinning","zip":"0871","sortLetters":"J","index":534},{"label":"金坛Jintan0519","name":"金坛","pinyin":"Jintan","zip":"0519","sortLetters":"J","index":535},{"label":"金堂Jintang028","name":"金堂","pinyin":"Jintang","zip":"028","sortLetters":"J","index":536},{"label":"进贤Jinxian0791","name":"进贤","pinyin":"Jinxian","zip":"0791","sortLetters":"J","index":537},{"label":"金溪Jinxi0794","name":"金溪","pinyin":"Jinxi","zip":"0794","sortLetters":"J","index":538},{"label":"金乡Jinxiang0537","name":"金乡","pinyin":"Jinxiang","zip":"0537","sortLetters":"J","index":539},{"label":"缙云Jinyun0578","name":"缙云","pinyin":"Jinyun","zip":"0578","sortLetters":"J","index":540},{"label":"金寨Jinzhai0564","name":"金寨","pinyin":"Jinzhai","zip":"0564","sortLetters":"J","index":541},{"label":"晋州Jinzhou0311","name":"晋州","pinyin":"Jinzhou","zip":"0311","sortLetters":"J","index":542},{"label":"吉水Jishui0796","name":"吉水","pinyin":"Jishui","zip":"0796","sortLetters":"J","index":543},{"label":"九江Jiujiang0792","name":"九江","pinyin":"Jiujiang","zip":"0792","sortLetters":"J","index":544},{"label":"九台Jiutai0431","name":"九台","pinyin":"Jiutai","zip":"0431","sortLetters":"J","index":545},{"label":"绩溪Jixi0563","name":"绩溪","pinyin":"Jixi","zip":"0563","sortLetters":"J","index":546},{"label":"济阳Jiyang0531","name":"济阳","pinyin":"Jiyang","zip":"0531","sortLetters":"J","index":547},{"label":"济源Jiyuan0391","name":"济源","pinyin":"Jiyuan","zip":"0391","sortLetters":"J","index":548},{"label":"鄄城Juancheng0530","name":"鄄城","pinyin":"Juancheng","zip":"0530","sortLetters":"J","index":549},{"label":"莒南Junan0539","name":"莒南","pinyin":"Junan","zip":"0539","sortLetters":"J","index":550},{"label":"句容Jurong0511","name":"句容","pinyin":"Jurong","zip":"0511","sortLetters":"J","index":551},{"label":"莒县Juxian0633","name":"莒县","pinyin":"Juxian","zip":"0633","sortLetters":"J","index":552},{"label":"巨野Juye0530","name":"巨野","pinyin":"Juye","zip":"0530","sortLetters":"J","index":553},{"label":"嘉兴Jiaxing0573","name":"嘉兴","pinyin":"Jiaxing","zip":"0573","sortLetters":"J","index":21},{"label":"焦作Jiaozuo0391","name":"焦作","pinyin":"Jiaozuo","zip":"0391","sortLetters":"J","index":20}]},{"sortLetters":"K","items":[{"label":"克孜勒Kezile0908","name":"克孜勒","pinyin":"Kezile","zip":"0908","sortLetters":"K","index":176},{"label":"昆明Kunming0871","name":"昆明","pinyin":"Kunming","zip":"0871","sortLetters":"K","index":24},{"label":"开封Kaifeng0378","name":"开封","pinyin":"Kaifeng","zip":"0378","sortLetters":"K","index":173},{"label":"喀什地Kashidi0998","name":"喀什地","pinyin":"Kashidi","zip":"0998","sortLetters":"K","index":174},{"label":"开化Kaihua0570","name":"开化","pinyin":"Kaihua","zip":"0570","sortLetters":"K","index":554},{"label":"开平Kaiping0750","name":"开平","pinyin":"Kaiping","zip":"0750","sortLetters":"K","index":555},{"label":"开县Kaixian023","name":"开县","pinyin":"Kaixian","zip":"023","sortLetters":"K","index":556},{"label":"开阳Kaiyang0851","name":"开阳","pinyin":"Kaiyang","zip":"0851","sortLetters":"K","index":557},{"label":"康平Kangping024","name":"康平","pinyin":"Kangping","zip":"024","sortLetters":"K","index":558},{"label":"垦利Kenli0546","name":"垦利","pinyin":"Kenli","zip":"0546","sortLetters":"K","index":559},{"label":"昆山Kunshan0512","name":"昆山","pinyin":"Kunshan","zip":"0512","sortLetters":"K","index":560},{"label":"克孜勒Kezile0908","name":"克孜勒","pinyin":"Kezile","zip":"0908","sortLetters":"K","index":176}]},{"sortLetters":"L","items":[{"label":"柳州Liuzhou0772","name":"柳州","pinyin":"Liuzhou","zip":"0772","sortLetters":"L","index":26},{"label":"洛阳Luoyang0379","name":"洛阳","pinyin":"Luoyang","zip":"0379","sortLetters":"L","index":27},{"label":"漯河Luohe0395","name":"漯河","pinyin":"Luohe","zip":"0395","sortLetters":"L","index":199},{"label":"来宾Laibin0772","name":"来宾","pinyin":"Laibin","zip":"0772","sortLetters":"L","index":177},{"label":"莱芜Laiwu0634","name":"莱芜","pinyin":"Laiwu","zip":"0634","sortLetters":"L","index":178},{"label":"泸州Luzhou0830","name":"泸州","pinyin":"Luzhou","zip":"0830","sortLetters":"L","index":200},{"label":"兰州Lanzhou0931","name":"兰州","pinyin":"Lanzhou","zip":"0931","sortLetters":"L","index":25},{"label":"廊坊Langfang0316","name":"廊坊","pinyin":"Langfang","zip":"0316","sortLetters":"L","index":179},{"label":"拉萨Lasa0891","name":"拉萨","pinyin":"Lasa","zip":"0891","sortLetters":"L","index":180},{"label":"乐山Leshan0833","name":"乐山","pinyin":"Leshan","zip":"0833","sortLetters":"L","index":181},{"label":"凉山Liangshan0834","name":"凉山","pinyin":"Liangshan","zip":"0834","sortLetters":"L","index":182},{"label":"连云港Lianyungang0518","name":"连云港","pinyin":"Lianyungang","zip":"0518","sortLetters":"L","index":183},{"label":"聊城Liaocheng0635","name":"聊城","pinyin":"Liaocheng","zip":"0635","sortLetters":"L","index":184},{"label":"辽阳Liaoyang0419","name":"辽阳","pinyin":"Liaoyang","zip":"0419","sortLetters":"L","index":185},{"label":"辽源Liaoyuan0437","name":"辽源","pinyin":"Liaoyuan","zip":"0437","sortLetters":"L","index":186},{"label":"丽江Lijiang0888","name":"丽江","pinyin":"Lijiang","zip":"0888","sortLetters":"L","index":187},{"label":"临沧Lincang0883","name":"临沧","pinyin":"Lincang","zip":"0883","sortLetters":"L","index":188},{"label":"临汾Linfen0357","name":"临汾","pinyin":"Linfen","zip":"0357","sortLetters":"L","index":189},{"label":"临夏Linxia0930","name":"临夏","pinyin":"Linxia","zip":"0930","sortLetters":"L","index":190},{"label":"临沂Linyi0539","name":"临沂","pinyin":"Linyi","zip":"0539","sortLetters":"L","index":191},{"label":"林芝Linzhi0894","name":"林芝","pinyin":"Linzhi","zip":"0894","sortLetters":"L","index":192},{"label":"丽水Lishui0578","name":"丽水","pinyin":"Lishui","zip":"0578","sortLetters":"L","index":193},{"label":"六安Liuan0564","name":"六安","pinyin":"Liuan","zip":"0564","sortLetters":"L","index":194},{"label":"六盘水Liupanshui0858","name":"六盘水","pinyin":"Liupanshui","zip":"0858","sortLetters":"L","index":195},{"label":"吕梁Lvliang0358","name":"吕梁","pinyin":"Lvliang","zip":"0358","sortLetters":"L","index":201},{"label":"陇南Longnan0939","name":"陇南","pinyin":"Longnan","zip":"0939","sortLetters":"L","index":196},{"label":"龙岩Longyan0597","name":"龙岩","pinyin":"Longyan","zip":"0597","sortLetters":"L","index":197},{"label":"来安Laian0550","name":"来安","pinyin":"Laian","zip":"0550","sortLetters":"L","index":561},{"label":"莱西Laixi0532","name":"莱西","pinyin":"Laixi","zip":"0532","sortLetters":"L","index":562},{"label":"莱阳Laiyang0535","name":"莱阳","pinyin":"Laiyang","zip":"0535","sortLetters":"L","index":563},{"label":"莱州Laizhou0535","name":"莱州","pinyin":"Laizhou","zip":"0535","sortLetters":"L","index":564},{"label":"郎溪Langxi0563","name":"郎溪","pinyin":"Langxi","zip":"0563","sortLetters":"L","index":565},{"label":"蓝田Lantian029","name":"蓝田","pinyin":"Lantian","zip":"029","sortLetters":"L","index":566},{"label":"兰溪Lanxi0579","name":"兰溪","pinyin":"Lanxi","zip":"0579","sortLetters":"L","index":567},{"label":"乐安Lean0794","name":"乐安","pinyin":"Lean","zip":"0794","sortLetters":"L","index":568},{"label":"乐昌Lechang0751","name":"乐昌","pinyin":"Lechang","zip":"0751","sortLetters":"L","index":569},{"label":"雷州Leizhou0759","name":"雷州","pinyin":"Leizhou","zip":"0759","sortLetters":"L","index":570},{"label":"乐陵Leling0534","name":"乐陵","pinyin":"Leling","zip":"0534","sortLetters":"L","index":571},{"label":"乐平Leping0798","name":"乐平","pinyin":"Leping","zip":"0798","sortLetters":"L","index":572},{"label":"乐清Leqing0577","name":"乐清","pinyin":"Leqing","zip":"0577","sortLetters":"L","index":573},{"label":"乐亭Leting0315","name":"乐亭","pinyin":"Leting","zip":"0315","sortLetters":"L","index":574},{"label":"连城Liancheng0597","name":"连城","pinyin":"Liancheng","zip":"0597","sortLetters":"L","index":575},{"label":"梁平Liangping023","name":"梁平","pinyin":"Liangping","zip":"023","sortLetters":"L","index":576},{"label":"梁山Liangshan0537","name":"梁山","pinyin":"Liangshan","zip":"0537","sortLetters":"L","index":577},{"label":"莲花Lianhua0799","name":"莲花","pinyin":"Lianhua","zip":"0799","sortLetters":"L","index":578},{"label":"连江Lianjiang0591","name":"连江","pinyin":"Lianjiang","zip":"0591","sortLetters":"L","index":579},{"label":"廉江Lianjiang0759","name":"廉江","pinyin":"Lianjiang","zip":"0759","sortLetters":"L","index":580},{"label":"连南Liannan0763","name":"连南","pinyin":"Liannan","zip":"0763","sortLetters":"L","index":581},{"label":"连平Lianping0762","name":"连平","pinyin":"Lianping","zip":"0762","sortLetters":"L","index":582},{"label":"连山Lianshan0763","name":"连山","pinyin":"Lianshan","zip":"0763","sortLetters":"L","index":583},{"label":"涟水Lianshui0517","name":"涟水","pinyin":"Lianshui","zip":"0517","sortLetters":"L","index":584},{"label":"连州Lianzhou0763","name":"连州","pinyin":"Lianzhou","zip":"0763","sortLetters":"L","index":585},{"label":"辽中Liaozhong024","name":"辽中","pinyin":"Liaozhong","zip":"024","sortLetters":"L","index":586},{"label":"黎川Lichuan0794","name":"黎川","pinyin":"Lichuan","zip":"0794","sortLetters":"L","index":587},{"label":"利津Lijin0546","name":"利津","pinyin":"Lijin","zip":"0546","sortLetters":"L","index":588},{"label":"临安Linan0571","name":"临安","pinyin":"Linan","zip":"0571","sortLetters":"L","index":589},{"label":"灵璧Lingbi0557","name":"灵璧","pinyin":"Lingbi","zip":"0557","sortLetters":"L","index":590},{"label":"灵寿Lingshou0311","name":"灵寿","pinyin":"Lingshou","zip":"0311","sortLetters":"L","index":591},{"label":"陵县Lingxian0534","name":"陵县","pinyin":"Lingxian","zip":"0534","sortLetters":"L","index":592},{"label":"临海Linhai0576","name":"临海","pinyin":"Linhai","zip":"0576","sortLetters":"L","index":593},{"label":"临清Linqing0635","name":"临清","pinyin":"Linqing","zip":"0635","sortLetters":"L","index":594},{"label":"临泉Linquan0558","name":"临泉","pinyin":"Linquan","zip":"0558","sortLetters":"L","index":595},{"label":"临朐Linqu0536","name":"临朐","pinyin":"Linqu","zip":"0536","sortLetters":"L","index":596},{"label":"临沭Linshu0539","name":"临沭","pinyin":"Linshu","zip":"0539","sortLetters":"L","index":597},{"label":"临邑Linyi0534","name":"临邑","pinyin":"Linyi","zip":"0534","sortLetters":"L","index":598},{"label":"溧水Lishui025","name":"溧水","pinyin":"Lishui","zip":"025","sortLetters":"L","index":599},{"label":"柳城Liucheng0772","name":"柳城","pinyin":"Liucheng","zip":"0772","sortLetters":"L","index":600},{"label":"柳江Liujiang0772","name":"柳江","pinyin":"Liujiang","zip":"0772","sortLetters":"L","index":601},{"label":"浏阳Liuyang0731","name":"浏阳","pinyin":"Liuyang","zip":"0731","sortLetters":"L","index":602},{"label":"利辛Lixin0558","name":"利辛","pinyin":"Lixin","zip":"0558","sortLetters":"L","index":603},{"label":"溧阳Liyang0519","name":"溧阳","pinyin":"Liyang","zip":"0519","sortLetters":"L","index":604},{"label":"隆安Longan0771","name":"隆安","pinyin":"Longan","zip":"0771","sortLetters":"L","index":605},{"label":"龙川Longchuan0762","name":"龙川","pinyin":"Longchuan","zip":"0762","sortLetters":"L","index":606},{"label":"龙海Longhai0596","name":"龙海","pinyin":"Longhai","zip":"0596","sortLetters":"L","index":607},{"label":"龙口Longkou0535","name":"龙口","pinyin":"Longkou","zip":"0535","sortLetters":"L","index":608},{"label":"龙门Longmen0752","name":"龙门","pinyin":"Longmen","zip":"0752","sortLetters":"L","index":609},{"label":"龙南Longnan0797","name":"龙南","pinyin":"Longnan","zip":"0797","sortLetters":"L","index":610},{"label":"龙泉Longquan0578","name":"龙泉","pinyin":"Longquan","zip":"0578","sortLetters":"L","index":611},{"label":"龙游Longyou0570","name":"龙游","pinyin":"Longyou","zip":"0570","sortLetters":"L","index":612},{"label":"栾城Luancheng0311","name":"栾城","pinyin":"Luancheng","zip":"0311","sortLetters":"L","index":613},{"label":"栾川Luanchuan0379","name":"栾川","pinyin":"Luanchuan","zip":"0379","sortLetters":"L","index":614},{"label":"滦南Luannan0315","name":"滦南","pinyin":"Luannan","zip":"0315","sortLetters":"L","index":615},{"label":"滦县Luanxian0315","name":"滦县","pinyin":"Luanxian","zip":"0315","sortLetters":"L","index":616},{"label":"陆丰Lufeng0660","name":"陆丰","pinyin":"Lufeng","zip":"0660","sortLetters":"L","index":617},{"label":"陆河Luhe0660","name":"陆河","pinyin":"Luhe","zip":"0660","sortLetters":"L","index":618},{"label":"庐江Lujiang0565","name":"庐江","pinyin":"Lujiang","zip":"0565","sortLetters":"L","index":619},{"label":"罗定Luoding0766","name":"罗定","pinyin":"Luoding","zip":"0766","sortLetters":"L","index":620},{"label":"洛宁Luoning0379","name":"洛宁","pinyin":"Luoning","zip":"0379","sortLetters":"L","index":621},{"label":"罗源Luoyuan0591","name":"罗源","pinyin":"Luoyuan","zip":"0591","sortLetters":"L","index":622},{"label":"鹿泉Luquan0311","name":"鹿泉","pinyin":"Luquan","zip":"0311","sortLetters":"L","index":623},{"label":"禄劝Luquan0871","name":"禄劝","pinyin":"Luquan","zip":"0871","sortLetters":"L","index":624},{"label":"芦溪Luxi0799","name":"芦溪","pinyin":"Luxi","zip":"0799","sortLetters":"L","index":625},{"label":"鹿寨Luzhai0772","name":"鹿寨","pinyin":"Luzhai","zip":"0772","sortLetters":"L","index":626},{"label":"陇南Longnan0939","name":"陇南","pinyin":"Longnan","zip":"0939","sortLetters":"L","index":196},{"label":"柳州Liuzhou0772","name":"柳州","pinyin":"Liuzhou","zip":"0772","sortLetters":"L","index":26}]},{"sortLetters":"M","items":[{"label":"眉山Meishan028","name":"眉山","pinyin":"Meishan","zip":"028","sortLetters":"M","index":204},{"label":"梅州Meizhou0753","name":"梅州","pinyin":"Meizhou","zip":"0753","sortLetters":"M","index":205},{"label":"绵阳Mianyang0816","name":"绵阳","pinyin":"Mianyang","zip":"0816","sortLetters":"M","index":206},{"label":"牡丹江Mudanjiang0453","name":"牡丹江","pinyin":"Mudanjiang","zip":"0453","sortLetters":"M","index":207},{"label":"茂名Maoming0668","name":"茂名","pinyin":"Maoming","zip":"0668","sortLetters":"M","index":203},{"label":"马山Mashan0771","name":"马山","pinyin":"Mashan","zip":"0771","sortLetters":"M","index":627},{"label":"梅县Meixian0753","name":"梅县","pinyin":"Meixian","zip":"0753","sortLetters":"M","index":628},{"label":"蒙城Mengcheng0558","name":"蒙城","pinyin":"Mengcheng","zip":"0558","sortLetters":"M","index":629},{"label":"孟津Mengjin0379","name":"孟津","pinyin":"Mengjin","zip":"0379","sortLetters":"M","index":630},{"label":"蒙阴Mengyin0539","name":"蒙阴","pinyin":"Mengyin","zip":"0539","sortLetters":"M","index":631},{"label":"孟州Mengzhou0391","name":"孟州","pinyin":"Mengzhou","zip":"0391","sortLetters":"M","index":632},{"label":"明光Mingguang0550","name":"明光","pinyin":"Mingguang","zip":"0550","sortLetters":"M","index":633},{"label":"明溪Mingxi0598","name":"明溪","pinyin":"Mingxi","zip":"0598","sortLetters":"M","index":634},{"label":"闽侯Minhou0591","name":"闽侯","pinyin":"Minhou","zip":"0591","sortLetters":"M","index":635},{"label":"闽清Minqing0591","name":"闽清","pinyin":"Minqing","zip":"0591","sortLetters":"M","index":636},{"label":"木兰Mulan0451","name":"木兰","pinyin":"Mulan","zip":"0451","sortLetters":"M","index":637}]},{"sortLetters":"N","items":[{"label":"南昌Nanchang0791","name":"南昌","pinyin":"Nanchang","zip":"0791","sortLetters":"N","index":28},{"label":"南京Nanjing025","name":"南京","pinyin":"Nanjing","zip":"025","sortLetters":"N","index":29},{"label":"南宁Nanning0771","name":"南宁","pinyin":"Nanning","zip":"0771","sortLetters":"N","index":30},{"label":"南通Nantong0513","name":"南通","pinyin":"Nantong","zip":"0513","sortLetters":"N","index":31},{"label":"宁波Ningbo0574","name":"宁波","pinyin":"Ningbo","zip":"0574","sortLetters":"N","index":32},{"label":"宁德Ningde0593","name":"宁德","pinyin":"Ningde","zip":"0593","sortLetters":"N","index":213},{"label":"怒江Nujiang0886","name":"怒江","pinyin":"Nujiang","zip":"0886","sortLetters":"N","index":214},{"label":"那曲Naqu0896","name":"那曲","pinyin":"Naqu","zip":"0896","sortLetters":"N","index":211},{"label":"内江Neijiang0832","name":"内江","pinyin":"Neijiang","zip":"0832","sortLetters":"N","index":212},{"label":"南充Nanchong0817","name":"南充","pinyin":"Nanchong","zip":"0817","sortLetters":"N","index":208},{"label":"南平Nanping0599","name":"南平","pinyin":"Nanping","zip":"0599","sortLetters":"N","index":209},{"label":"南安Nanan0595","name":"南安","pinyin":"Nanan","zip":"0595","sortLetters":"N","index":638},{"label":"南澳Nanao0754","name":"南澳","pinyin":"Nanao","zip":"0754","sortLetters":"N","index":639},{"label":"南城Nancheng0794","name":"南城","pinyin":"Nancheng","zip":"0794","sortLetters":"N","index":640},{"label":"南川Nanchuan023","name":"南川","pinyin":"Nanchuan","zip":"023","sortLetters":"N","index":641},{"label":"南丰Nanfeng0794","name":"南丰","pinyin":"Nanfeng","zip":"0794","sortLetters":"N","index":642},{"label":"南靖Nanjing0596","name":"南靖","pinyin":"Nanjing","zip":"0596","sortLetters":"N","index":643},{"label":"南康Nankang0797","name":"南康","pinyin":"Nankang","zip":"0797","sortLetters":"N","index":644},{"label":"南陵Nanling0553","name":"南陵","pinyin":"Nanling","zip":"0553","sortLetters":"N","index":645},{"label":"南雄Nanxiong0751","name":"南雄","pinyin":"Nanxiong","zip":"0751","sortLetters":"N","index":646},{"label":"宁都Ningdu0797","name":"宁都","pinyin":"Ningdu","zip":"0797","sortLetters":"N","index":647},{"label":"宁国Ningguo0563","name":"宁国","pinyin":"Ningguo","zip":"0563","sortLetters":"N","index":648},{"label":"宁海Ninghai0574","name":"宁海","pinyin":"Ninghai","zip":"0574","sortLetters":"N","index":649},{"label":"宁化Ninghua0598","name":"宁化","pinyin":"Ninghua","zip":"0598","sortLetters":"N","index":650},{"label":"宁津Ningjin0534","name":"宁津","pinyin":"Ningjin","zip":"0534","sortLetters":"N","index":651},{"label":"宁乡Ningxiang0731","name":"宁乡","pinyin":"Ningxiang","zip":"0731","sortLetters":"N","index":652},{"label":"宁阳Ningyang0538","name":"宁阳","pinyin":"Ningyang","zip":"0538","sortLetters":"N","index":653},{"label":"农安Nongan0431","name":"农安","pinyin":"Nongan","zip":"0431","sortLetters":"N","index":654}]},{"sortLetters":"P","items":[{"label":"盘锦Panjin0427","name":"盘锦","pinyin":"Panjin","zip":"0427","sortLetters":"P","index":215},{"label":"攀枝花Panzhihua0812","name":"攀枝花","pinyin":"Panzhihua","zip":"0812","sortLetters":"P","index":216},{"label":"平顶山Pingdingshan0375","name":"平顶山","pinyin":"Pingdingshan","zip":"0375","sortLetters":"P","index":217},{"label":"平凉Pingliang0933","name":"平凉","pinyin":"Pingliang","zip":"0933","sortLetters":"P","index":218},{"label":"普洱Puer0879","name":"普洱","pinyin":"Puer","zip":"0879","sortLetters":"P","index":220},{"label":"莆田Putian0594","name":"莆田","pinyin":"Putian","zip":"0594","sortLetters":"P","index":221},{"label":"濮阳Puyang0393","name":"濮阳","pinyin":"Puyang","zip":"0393","sortLetters":"P","index":222},{"label":"磐安Panan0579","name":"磐安","pinyin":"Panan","zip":"0579","sortLetters":"P","index":655},{"label":"磐石Panshi0423","name":"磐石","pinyin":"Panshi","zip":"0423","sortLetters":"P","index":656},{"label":"沛县Peixian0516","name":"沛县","pinyin":"Peixian","zip":"0516","sortLetters":"P","index":657},{"label":"蓬莱Penglai0535","name":"蓬莱","pinyin":"Penglai","zip":"0535","sortLetters":"P","index":658},{"label":"彭水Pengshui023","name":"彭水","pinyin":"Pengshui","zip":"023","sortLetters":"P","index":659},{"label":"彭泽Pengze0792","name":"彭泽","pinyin":"Pengze","zip":"0792","sortLetters":"P","index":660},{"label":"彭州Pengzhou028","name":"彭州","pinyin":"Pengzhou","zip":"028","sortLetters":"P","index":661},{"label":"平度Pingdu0532","name":"平度","pinyin":"Pingdu","zip":"0532","sortLetters":"P","index":662},{"label":"平和Pinghe0596","name":"平和","pinyin":"Pinghe","zip":"0596","sortLetters":"P","index":663},{"label":"平湖Pinghu0573","name":"平湖","pinyin":"Pinghu","zip":"0573","sortLetters":"P","index":664},{"label":"屏南Pingnan0593","name":"屏南","pinyin":"Pingnan","zip":"0593","sortLetters":"P","index":665},{"label":"平山Pingshan0311","name":"平山","pinyin":"Pingshan","zip":"0311","sortLetters":"P","index":666},{"label":"平潭Pingtan0591","name":"平潭","pinyin":"Pingtan","zip":"0591","sortLetters":"P","index":667},{"label":"平阳Pingyang0577","name":"平阳","pinyin":"Pingyang","zip":"0577","sortLetters":"P","index":668},{"label":"平阴Pingyin0531","name":"平阴","pinyin":"Pingyin","zip":"0531","sortLetters":"P","index":669},{"label":"平邑Pingyi0539","name":"平邑","pinyin":"Pingyi","zip":"0539","sortLetters":"P","index":670},{"label":"平原Pingyuan0534","name":"平原","pinyin":"Pingyuan","zip":"0534","sortLetters":"P","index":671},{"label":"平远Pingyuan0753","name":"平远","pinyin":"Pingyuan","zip":"0753","sortLetters":"P","index":672},{"label":"郫县Pixian028","name":"郫县","pinyin":"Pixian","zip":"028","sortLetters":"P","index":673},{"label":"邳州Pizhou0516","name":"邳州","pinyin":"Pizhou","zip":"0516","sortLetters":"P","index":674},{"label":"鄱阳Poyang0793","name":"鄱阳","pinyin":"Poyang","zip":"0793","sortLetters":"P","index":675},{"label":"浦城Pucheng0599","name":"浦城","pinyin":"Pucheng","zip":"0599","sortLetters":"P","index":676},{"label":"浦江Pujiang0579","name":"浦江","pinyin":"Pujiang","zip":"0579","sortLetters":"P","index":677},{"label":"蒲江Pujiang028","name":"蒲江","pinyin":"Pujiang","zip":"028","sortLetters":"P","index":678},{"label":"普兰店Pulandian0411","name":"普兰店","pinyin":"Pulandian","zip":"0411","sortLetters":"P","index":679},{"label":"普宁Puning0663","name":"普宁","pinyin":"Puning","zip":"0663","sortLetters":"P","index":680},{"label":"磐安Panan0579","name":"磐安","pinyin":"Panan","zip":"0579","sortLetters":"P","index":655},{"label":"盘锦Panjin0427","name":"盘锦","pinyin":"Panjin","zip":"0427","sortLetters":"P","index":215}]},{"sortLetters":"Q","items":[{"label":"青岛Qingdao0532","name":"青岛","pinyin":"Qingdao","zip":"0532","sortLetters":"Q","index":33},{"label":"泉州Quanzhou0595","name":"泉州","pinyin":"Quanzhou","zip":"0595","sortLetters":"Q","index":34},{"label":"黔南Qiannan0854","name":"黔南","pinyin":"Qiannan","zip":"0854","sortLetters":"Q","index":224},{"label":"黔西南Qianxinan0859","name":"黔西南","pinyin":"Qianxinan","zip":"0859","sortLetters":"Q","index":225},{"label":"庆阳Qingyang0934","name":"庆阳","pinyin":"Qingyang","zip":"0934","sortLetters":"Q","index":226},{"label":"清远Qingyuan0763","name":"清远","pinyin":"Qingyuan","zip":"0763","sortLetters":"Q","index":227},{"label":"秦皇岛Qinhuangdao0335","name":"秦皇岛","pinyin":"Qinhuangdao","zip":"0335","sortLetters":"Q","index":228},{"label":"钦州Qinzhou0777","name":"钦州","pinyin":"Qinzhou","zip":"0777","sortLetters":"Q","index":229},{"label":"齐齐哈尔Qiqihaer0452","name":"齐齐哈尔","pinyin":"Qiqihaer","zip":"0452","sortLetters":"Q","index":230},{"label":"七台河Qitaihe0464","name":"七台河","pinyin":"Qitaihe","zip":"0464","sortLetters":"Q","index":231},{"label":"曲靖Qujing0874","name":"曲靖","pinyin":"Qujing","zip":"0874","sortLetters":"Q","index":232},{"label":"衢州Quzhou0570","name":"衢州","pinyin":"Quzhou","zip":"0570","sortLetters":"Q","index":233},{"label":"迁安Qianan0315","name":"迁安","pinyin":"Qianan","zip":"0315","sortLetters":"Q","index":681},{"label":"潜山Qianshan0556","name":"潜山","pinyin":"Qianshan","zip":"0556","sortLetters":"Q","index":682},{"label":"铅山Qianshan0793","name":"铅山","pinyin":"Qianshan","zip":"0793","sortLetters":"Q","index":683},{"label":"迁西Qianxi0315","name":"迁西","pinyin":"Qianxi","zip":"0315","sortLetters":"Q","index":684},{"label":"启东Qidong0513","name":"启东","pinyin":"Qidong","zip":"0513","sortLetters":"Q","index":685},{"label":"齐河Qihe0534","name":"齐河","pinyin":"Qihe","zip":"0534","sortLetters":"Q","index":686},{"label":"綦江Qijiang023","name":"綦江","pinyin":"Qijiang","zip":"023","sortLetters":"Q","index":687},{"label":"祁门Qimen0559","name":"祁门","pinyin":"Qimen","zip":"0559","sortLetters":"Q","index":688},{"label":"清流Qingliu0598","name":"清流","pinyin":"Qingliu","zip":"0598","sortLetters":"Q","index":689},{"label":"青田Qingtian0578","name":"青田","pinyin":"Qingtian","zip":"0578","sortLetters":"Q","index":690},{"label":"清新Qingxin0763","name":"清新","pinyin":"Qingxin","zip":"0763","sortLetters":"Q","index":691},{"label":"青阳Qingyang0566","name":"青阳","pinyin":"Qingyang","zip":"0566","sortLetters":"Q","index":692},{"label":"庆元Qingyuan0578","name":"庆元","pinyin":"Qingyuan","zip":"0578","sortLetters":"Q","index":693},{"label":"庆云Qingyun0534","name":"庆云","pinyin":"Qingyun","zip":"0534","sortLetters":"Q","index":694},{"label":"清镇Qingzhen0851","name":"清镇","pinyin":"Qingzhen","zip":"0851","sortLetters":"Q","index":695},{"label":"青州Qingzhou0536","name":"青州","pinyin":"Qingzhou","zip":"0536","sortLetters":"Q","index":696},{"label":"沁阳Qinyang0391","name":"沁阳","pinyin":"Qinyang","zip":"0391","sortLetters":"Q","index":697},{"label":"邛崃Qionglai028","name":"邛崃","pinyin":"Qionglai","zip":"028","sortLetters":"Q","index":698},{"label":"栖霞Qixia0535","name":"栖霞","pinyin":"Qixia","zip":"0535","sortLetters":"Q","index":699},{"label":"全椒Quanjiao0550","name":"全椒","pinyin":"Quanjiao","zip":"0550","sortLetters":"Q","index":700},{"label":"全南Quannan0797","name":"全南","pinyin":"Quannan","zip":"0797","sortLetters":"Q","index":701},{"label":"曲阜Qufu0537","name":"曲阜","pinyin":"Qufu","zip":"0537","sortLetters":"Q","index":702},{"label":"曲江Qujiang0751","name":"曲江","pinyin":"Qujiang","zip":"0751","sortLetters":"Q","index":703},{"label":"迁安Qianan0315","name":"迁安","pinyin":"Qianan","zip":"0315","sortLetters":"Q","index":681}]},{"sortLetters":"R","items":[{"label":"日照Rizhao0633","name":"日照","pinyin":"Rizhao","zip":"0633","sortLetters":"R","index":235},{"label":"饶平Raoping0768","name":"饶平","pinyin":"Raoping","zip":"0768","sortLetters":"R","index":704},{"label":"仁化Renhua0751","name":"仁化","pinyin":"Renhua","zip":"0751","sortLetters":"R","index":705},{"label":"融安Rongan0772","name":"融安","pinyin":"Rongan","zip":"0772","sortLetters":"R","index":706},{"label":"荣昌Rongchang023","name":"荣昌","pinyin":"Rongchang","zip":"023","sortLetters":"R","index":707},{"label":"荣成Rongcheng0631","name":"荣成","pinyin":"Rongcheng","zip":"0631","sortLetters":"R","index":708},{"label":"融水Rongshui0772","name":"融水","pinyin":"Rongshui","zip":"0772","sortLetters":"R","index":709},{"label":"如东Rudong0513","name":"如东","pinyin":"Rudong","zip":"0513","sortLetters":"R","index":710},{"label":"如皋Rugao0513","name":"如皋","pinyin":"Rugao","zip":"0513","sortLetters":"R","index":711},{"label":"瑞安Ruian0577","name":"瑞安","pinyin":"Ruian","zip":"0577","sortLetters":"R","index":712},{"label":"瑞昌Ruichang0792","name":"瑞昌","pinyin":"Ruichang","zip":"0792","sortLetters":"R","index":713},{"label":"瑞金Ruijin0797","name":"瑞金","pinyin":"Ruijin","zip":"0797","sortLetters":"R","index":714},{"label":"乳山Rushan0631","name":"乳山","pinyin":"Rushan","zip":"0631","sortLetters":"R","index":715},{"label":"汝阳Ruyang0379","name":"汝阳","pinyin":"Ruyang","zip":"0379","sortLetters":"R","index":716},{"label":"乳源Ruyuan0751","name":"乳源","pinyin":"Ruyuan","zip":"0751","sortLetters":"R","index":717}]},{"sortLetters":"S","items":[{"label":"石嘴山Shizuishan0952","name":"石嘴山","pinyin":"Shizuishan","zip":"0952","sortLetters":"S","index":249},{"label":"双鸭山Shuangyashan0469","name":"双鸭山","pinyin":"Shuangyashan","zip":"0469","sortLetters":"S","index":250},{"label":"朔州Shuozhou0349","name":"朔州","pinyin":"Shuozhou","zip":"0349","sortLetters":"S","index":251},{"label":"四平Siping0434","name":"四平","pinyin":"Siping","zip":"0434","sortLetters":"S","index":252},{"label":"松原Songyuan0438","name":"松原","pinyin":"Songyuan","zip":"0438","sortLetters":"S","index":253},{"label":"绥化Suihua0455","name":"绥化","pinyin":"Suihua","zip":"0455","sortLetters":"S","index":254},{"label":"遂宁Suining0825","name":"遂宁","pinyin":"Suining","zip":"0825","sortLetters":"S","index":255},{"label":"随州Suizhou0722","name":"随州","pinyin":"Suizhou","zip":"0722","sortLetters":"S","index":256},{"label":"宿迁Suqian0527","name":"宿迁","pinyin":"Suqian","zip":"0527","sortLetters":"S","index":257},{"label":"宿州Suzhou0557","name":"宿州","pinyin":"Suzhou","zip":"0557","sortLetters":"S","index":258},{"label":"三门峡Sanmenxia0398","name":"三门峡","pinyin":"Sanmenxia","zip":"0398","sortLetters":"S","index":236},{"label":"三明Sanming0598","name":"三明","pinyin":"Sanming","zip":"0598","sortLetters":"S","index":237},{"label":"商洛Shangluo0914","name":"商洛","pinyin":"Shangluo","zip":"0914","sortLetters":"S","index":239},{"label":"商丘Shangqiu0370","name":"商丘","pinyin":"Shangqiu","zip":"0370","sortLetters":"S","index":240},{"label":"沈阳Shenyang024","name":"沈阳","pinyin":"Shenyang","zip":"024","sortLetters":"S","index":35},{"label":"深圳Shenzhen0755","name":"深圳","pinyin":"Shenzhen","zip":"0755","sortLetters":"S","index":36},{"label":"石家庄Shijiazhuang0311","name":"石家庄","pinyin":"Shijiazhuang","zip":"0311","sortLetters":"S","index":37},{"label":"苏州Suzhou0512","name":"苏州","pinyin":"Suzhou","zip":"0512","sortLetters":"S","index":38},{"label":"上饶Shangrao0793","name":"上饶","pinyin":"Shangrao","zip":"0793","sortLetters":"S","index":241},{"label":"山南Shannan0893","name":"山南","pinyin":"Shannan","zip":"0893","sortLetters":"S","index":242},{"label":"汕头Shantou0754","name":"汕头","pinyin":"Shantou","zip":"0754","sortLetters":"S","index":243},{"label":"汕尾Shanwei0660","name":"汕尾","pinyin":"Shanwei","zip":"0660","sortLetters":"S","index":244},{"label":"韶关Shaoguan0751","name":"韶关","pinyin":"Shaoguan","zip":"0751","sortLetters":"S","index":245},{"label":"绍兴Shaoxing0575","name":"绍兴","pinyin":"Shaoxing","zip":"0575","sortLetters":"S","index":246},{"label":"邵阳Shaoyang0739","name":"邵阳","pinyin":"Shaoyang","zip":"0739","sortLetters":"S","index":247},{"label":"十堰Shiyan0719","name":"十堰","pinyin":"Shiyan","zip":"0719","sortLetters":"S","index":248},{"label":"上海Shanghai021","name":"上海","pinyin":"Shanghai","zip":"021","sortLetters":"S","index":2},{"label":"三江Sanjiang0772","name":"三江","pinyin":"Sanjiang","zip":"0772","sortLetters":"S","index":718},{"label":"三门Sanmen0576","name":"三门","pinyin":"Sanmen","zip":"0576","sortLetters":"S","index":719},{"label":"诏安Saoan0596","name":"诏安","pinyin":"Saoan","zip":"0596","sortLetters":"S","index":720},{"label":"上高Shanggao0795","name":"上高","pinyin":"Shanggao","zip":"0795","sortLetters":"S","index":721},{"label":"上杭Shanghang0597","name":"上杭","pinyin":"Shanghang","zip":"0597","sortLetters":"S","index":722},{"label":"商河Shanghe0531","name":"商河","pinyin":"Shanghe","zip":"0531","sortLetters":"S","index":723},{"label":"上栗Shangli0799","name":"上栗","pinyin":"Shangli","zip":"0799","sortLetters":"S","index":724},{"label":"上林Shanglin0771","name":"上林","pinyin":"Shanglin","zip":"0771","sortLetters":"S","index":725},{"label":"上饶Shangrao0793","name":"上饶","pinyin":"Shangrao","zip":"0793","sortLetters":"S","index":726},{"label":"上犹Shangyou0797","name":"上犹","pinyin":"Shangyou","zip":"0797","sortLetters":"S","index":727},{"label":"上虞Shangyu0575","name":"上虞","pinyin":"Shangyu","zip":"0575","sortLetters":"S","index":728},{"label":"尚志Shangzhi0451","name":"尚志","pinyin":"Shangzhi","zip":"0451","sortLetters":"S","index":729},{"label":"邵武Shaowu0599","name":"邵武","pinyin":"Shaowu","zip":"0599","sortLetters":"S","index":730},{"label":"绍兴Shaoxing0575","name":"绍兴","pinyin":"Shaoxing","zip":"0575","sortLetters":"S","index":731},{"label":"沙县Shaxian0598","name":"沙县","pinyin":"Shaxian","zip":"0598","sortLetters":"S","index":732},{"label":"嵊泗Shengsi0580","name":"嵊泗","pinyin":"Shengsi","zip":"0580","sortLetters":"S","index":733},{"label":"嵊州Shengzhou0575","name":"嵊州","pinyin":"Shengzhou","zip":"0575","sortLetters":"S","index":734},{"label":"莘县Shenxian0635","name":"莘县","pinyin":"Shenxian","zip":"0635","sortLetters":"S","index":735},{"label":"深泽Shenze0311","name":"深泽","pinyin":"Shenze","zip":"0311","sortLetters":"S","index":736},{"label":"歙县Shexian0559","name":"歙县","pinyin":"Shexian","zip":"0559","sortLetters":"S","index":737},{"label":"射阳Sheyang0515","name":"射阳","pinyin":"Sheyang","zip":"0515","sortLetters":"S","index":738},{"label":"石城Shicheng0797","name":"石城","pinyin":"Shicheng","zip":"0797","sortLetters":"S","index":739},{"label":"石林Shilin0871","name":"石林","pinyin":"Shilin","zip":"0871","sortLetters":"S","index":740},{"label":"石狮Shishi0595","name":"石狮","pinyin":"Shishi","zip":"0595","sortLetters":"S","index":741},{"label":"石台Shitai0566","name":"石台","pinyin":"Shitai","zip":"0566","sortLetters":"S","index":742},{"label":"始兴Shixing0751","name":"始兴","pinyin":"Shixing","zip":"0751","sortLetters":"S","index":743},{"label":"石柱Shizhu023","name":"石柱","pinyin":"Shizhu","zip":"023","sortLetters":"S","index":744},{"label":"寿光Shouguang0536","name":"寿光","pinyin":"Shouguang","zip":"0536","sortLetters":"S","index":745},{"label":"寿宁Shouning0593","name":"寿宁","pinyin":"Shouning","zip":"0593","sortLetters":"S","index":746},{"label":"寿县Shouxian0564","name":"寿县","pinyin":"Shouxian","zip":"0564","sortLetters":"S","index":747},{"label":"双城Shuangcheng0451","name":"双城","pinyin":"Shuangcheng","zip":"0451","sortLetters":"S","index":748},{"label":"双流Shuangliu028","name":"双流","pinyin":"Shuangliu","zip":"028","sortLetters":"S","index":749},{"label":"舒城Shucheng0564","name":"舒城","pinyin":"Shucheng","zip":"0564","sortLetters":"S","index":750},{"label":"舒兰Shulan0423","name":"舒兰","pinyin":"Shulan","zip":"0423","sortLetters":"S","index":751},{"label":"顺昌Shunchang0599","name":"顺昌","pinyin":"Shunchang","zip":"0599","sortLetters":"S","index":752},{"label":"沭阳Shuyang0527","name":"沭阳","pinyin":"Shuyang","zip":"0527","sortLetters":"S","index":753},{"label":"泗洪Sihong0527","name":"泗洪","pinyin":"Sihong","zip":"0527","sortLetters":"S","index":754},{"label":"四会Sihui0758","name":"四会","pinyin":"Sihui","zip":"0758","sortLetters":"S","index":755},{"label":"泗水Sishui0537","name":"泗水","pinyin":"Sishui","zip":"0537","sortLetters":"S","index":756},{"label":"泗县Sixian0557","name":"泗县","pinyin":"Sixian","zip":"0557","sortLetters":"S","index":757},{"label":"泗阳Siyang0527","name":"泗阳","pinyin":"Siyang","zip":"0527","sortLetters":"S","index":758},{"label":"嵩明Songming0871","name":"嵩明","pinyin":"Songming","zip":"0871","sortLetters":"S","index":759},{"label":"松溪Songxi0599","name":"松溪","pinyin":"Songxi","zip":"0599","sortLetters":"S","index":760},{"label":"嵩县Songxian0379","name":"嵩县","pinyin":"Songxian","zip":"0379","sortLetters":"S","index":761},{"label":"松阳Songyang0578","name":"松阳","pinyin":"Songyang","zip":"0578","sortLetters":"S","index":762},{"label":"遂昌Suichang0578","name":"遂昌","pinyin":"Suichang","zip":"0578","sortLetters":"S","index":763},{"label":"遂川Suichuan0796","name":"遂川","pinyin":"Suichuan","zip":"0796","sortLetters":"S","index":764},{"label":"睢宁Suining0516","name":"睢宁","pinyin":"Suining","zip":"0516","sortLetters":"S","index":765},{"label":"濉溪Suixi0561","name":"濉溪","pinyin":"Suixi","zip":"0561","sortLetters":"S","index":766},{"label":"遂溪Suixi0759","name":"遂溪","pinyin":"Suixi","zip":"0759","sortLetters":"S","index":767},{"label":"宿松Susong0556","name":"宿松","pinyin":"Susong","zip":"0556","sortLetters":"S","index":768},{"label":"宿豫Suyu0527","name":"宿豫","pinyin":"Suyu","zip":"0527","sortLetters":"S","index":769},{"label":"三亚Sanya0899","name":"三亚","pinyin":"Sanya","zip":"0899","sortLetters":"S","index":238}]},{"sortLetters":"T","items":[{"label":"唐山Tangshan0315","name":"唐山","pinyin":"Tangshan","zip":"0315","sortLetters":"T","index":40},{"label":"天津Tianjin022","name":"天津","pinyin":"Tianjin","zip":"022","sortLetters":"T","index":3},{"label":"塔城地Tachengdi0901","name":"塔城地","pinyin":"Tachengdi","zip":"0901","sortLetters":"T","index":259},{"label":"泰安Taian0538","name":"泰安","pinyin":"Taian","zip":"0538","sortLetters":"T","index":260},{"label":"太原Taiyuan0351","name":"太原","pinyin":"Taiyuan","zip":"0351","sortLetters":"T","index":261},{"label":"泰州Taizhou0523","name":"泰州","pinyin":"Taizhou","zip":"0523","sortLetters":"T","index":262},{"label":"天水Tianshui0938","name":"天水","pinyin":"Tianshui","zip":"0938","sortLetters":"T","index":263},{"label":"铁岭Tieling0410","name":"铁岭","pinyin":"Tieling","zip":"0410","sortLetters":"T","index":264},{"label":"铜川Tongchuan0919","name":"铜川","pinyin":"Tongchuan","zip":"0919","sortLetters":"T","index":265},{"label":"通化Tonghua0435","name":"通化","pinyin":"Tonghua","zip":"0435","sortLetters":"T","index":266},{"label":"通辽Tongliao0475","name":"通辽","pinyin":"Tongliao","zip":"0475","sortLetters":"T","index":267},{"label":"铜陵Tongling0562","name":"铜陵","pinyin":"Tongling","zip":"0562","sortLetters":"T","index":268},{"label":"铜仁Tongren0856","name":"铜仁","pinyin":"Tongren","zip":"0856","sortLetters":"T","index":269},{"label":"吐鲁番Tulufan0995","name":"吐鲁番","pinyin":"Tulufan","zip":"0995","sortLetters":"T","index":270},{"label":"太仓Taicang0512","name":"太仓","pinyin":"Taicang","zip":"0512","sortLetters":"T","index":770},{"label":"太和Taihe0558","name":"太和","pinyin":"Taihe","zip":"0558","sortLetters":"T","index":771},{"label":"泰和Taihe0796","name":"泰和","pinyin":"Taihe","zip":"0796","sortLetters":"T","index":772},{"label":"太湖Taihu0556","name":"太湖","pinyin":"Taihu","zip":"0556","sortLetters":"T","index":773},{"label":"泰宁Taining0598","name":"泰宁","pinyin":"Taining","zip":"0598","sortLetters":"T","index":774},{"label":"台山Taishan0750","name":"台山","pinyin":"Taishan","zip":"0750","sortLetters":"T","index":775},{"label":"泰顺Taishun0577","name":"泰顺","pinyin":"Taishun","zip":"0577","sortLetters":"T","index":776},{"label":"泰兴Taixing0523","name":"泰兴","pinyin":"Taixing","zip":"0523","sortLetters":"T","index":777},{"label":"郯城Tancheng0539","name":"郯城","pinyin":"Tancheng","zip":"0539","sortLetters":"T","index":778},{"label":"唐海Tanghai0315","name":"唐海","pinyin":"Tanghai","zip":"0315","sortLetters":"T","index":779},{"label":"滕州Tengzhou0623","name":"滕州","pinyin":"Tengzhou","zip":"0623","sortLetters":"T","index":780},{"label":"天长Tianchang0550","name":"天长","pinyin":"Tianchang","zip":"0550","sortLetters":"T","index":781},{"label":"天台Tiantai0576","name":"天台","pinyin":"Tiantai","zip":"0576","sortLetters":"T","index":782},{"label":"桐城Tongcheng0556","name":"桐城","pinyin":"Tongcheng","zip":"0556","sortLetters":"T","index":783},{"label":"铜鼓Tonggu0795","name":"铜鼓","pinyin":"Tonggu","zip":"0795","sortLetters":"T","index":784},{"label":"通河Tonghe0451","name":"通河","pinyin":"Tonghe","zip":"0451","sortLetters":"T","index":785},{"label":"铜梁Tongliang023","name":"铜梁","pinyin":"Tongliang","zip":"023","sortLetters":"T","index":786},{"label":"铜陵Tongling0562","name":"铜陵","pinyin":"Tongling","zip":"0562","sortLetters":"T","index":787},{"label":"桐庐Tonglu0571","name":"桐庐","pinyin":"Tonglu","zip":"0571","sortLetters":"T","index":788},{"label":"潼南Tongnan023","name":"潼南","pinyin":"Tongnan","zip":"023","sortLetters":"T","index":789},{"label":"铜山Tongshan0516","name":"铜山","pinyin":"Tongshan","zip":"0516","sortLetters":"T","index":790},{"label":"桐乡Tongxiang0573","name":"桐乡","pinyin":"Tongxiang","zip":"0573","sortLetters":"T","index":791},{"label":"通州Tongzhou0513","name":"通州","pinyin":"Tongzhou","zip":"0513","sortLetters":"T","index":792},{"label":"天津Tianjin022","name":"天津","pinyin":"Tianjin","zip":"022","sortLetters":"T","index":3},{"label":"唐山Tangshan0315","name":"唐山","pinyin":"Tangshan","zip":"0315","sortLetters":"T","index":40}]},{"sortLetters":"W","items":[{"label":"武威Wuwei0935","name":"武威","pinyin":"Wuwei","zip":"0935","sortLetters":"W","index":278},{"label":"吴忠Wuzhong0953","name":"吴忠","pinyin":"Wuzhong","zip":"0953","sortLetters":"W","index":279},{"label":"梧州Wuzhou0774","name":"梧州","pinyin":"Wuzhou","zip":"0774","sortLetters":"W","index":280},{"label":"武汉Wuhan027","name":"武汉","pinyin":"Wuhan","zip":"027","sortLetters":"W","index":43},{"label":"无锡Wuxi0510","name":"无锡","pinyin":"Wuxi","zip":"0510","sortLetters":"W","index":44},{"label":"威海Weihai0631","name":"威海","pinyin":"Weihai","zip":"0631","sortLetters":"W","index":42},{"label":"渭南Weinan0913","name":"渭南","pinyin":"Weinan","zip":"0913","sortLetters":"W","index":271},{"label":"文山Wenshan0876","name":"文山","pinyin":"Wenshan","zip":"0876","sortLetters":"W","index":272},{"label":"温州Wenzhou0577","name":"温州","pinyin":"Wenzhou","zip":"0577","sortLetters":"W","index":273},{"label":"乌海Wuhai0473","name":"乌海","pinyin":"Wuhai","zip":"0473","sortLetters":"W","index":274},{"label":"芜湖Wuhu0553","name":"芜湖","pinyin":"Wuhu","zip":"0553","sortLetters":"W","index":275},{"label":"乌兰察布Wulanchabu0474","name":"乌兰察布","pinyin":"Wulanchabu","zip":"0474","sortLetters":"W","index":276},{"label":"乌鲁木齐Wulumuqi0991","name":"乌鲁木齐","pinyin":"Wulumuqi","zip":"0991","sortLetters":"W","index":277},{"label":"瓦房店Wafangdian0411","name":"瓦房店","pinyin":"Wafangdian","zip":"0411","sortLetters":"W","index":793},{"label":"万安Wanan0796","name":"万安","pinyin":"Wanan","zip":"0796","sortLetters":"W","index":794},{"label":"望城Wangcheng0731","name":"望城","pinyin":"Wangcheng","zip":"0731","sortLetters":"W","index":795},{"label":"望江Wangjiang0556","name":"望江","pinyin":"Wangjiang","zip":"0556","sortLetters":"W","index":796},{"label":"万年Wannian0793","name":"万年","pinyin":"Wannian","zip":"0793","sortLetters":"W","index":797},{"label":"万载Wanzai0795","name":"万载","pinyin":"Wanzai","zip":"0795","sortLetters":"W","index":798},{"label":"微山Weishan0537","name":"微山","pinyin":"Weishan","zip":"0537","sortLetters":"W","index":799},{"label":"文成Wencheng0577","name":"文成","pinyin":"Wencheng","zip":"0577","sortLetters":"W","index":800},{"label":"文登Wendeng0631","name":"文登","pinyin":"Wendeng","zip":"0631","sortLetters":"W","index":801},{"label":"翁源Wengyuan0751","name":"翁源","pinyin":"Wengyuan","zip":"0751","sortLetters":"W","index":802},{"label":"温岭Wenling0576","name":"温岭","pinyin":"Wenling","zip":"0576","sortLetters":"W","index":803},{"label":"汶上Wenshang0537","name":"汶上","pinyin":"Wenshang","zip":"0537","sortLetters":"W","index":804},{"label":"温县Wenxian0391","name":"温县","pinyin":"Wenxian","zip":"0391","sortLetters":"W","index":805},{"label":"涡阳Woyang0558","name":"涡阳","pinyin":"Woyang","zip":"0558","sortLetters":"W","index":806},{"label":"五常Wuchang0451","name":"五常","pinyin":"Wuchang","zip":"0451","sortLetters":"W","index":807},{"label":"武城Wucheng0534","name":"武城","pinyin":"Wucheng","zip":"0534","sortLetters":"W","index":808},{"label":"吴川Wuchuan0759","name":"吴川","pinyin":"Wuchuan","zip":"0759","sortLetters":"W","index":809},{"label":"无棣Wudi0543","name":"无棣","pinyin":"Wudi","zip":"0543","sortLetters":"W","index":810},{"label":"五河Wuhe0552","name":"五河","pinyin":"Wuhe","zip":"0552","sortLetters":"W","index":811},{"label":"芜湖Wuhu0553","name":"芜湖","pinyin":"Wuhu","zip":"0553","sortLetters":"W","index":812},{"label":"五华Wuhua0753","name":"五华","pinyin":"Wuhua","zip":"0753","sortLetters":"W","index":813},{"label":"无极Wuji0311","name":"无极","pinyin":"Wuji","zip":"0311","sortLetters":"W","index":814},{"label":"吴江Wujiang0512","name":"吴江","pinyin":"Wujiang","zip":"0512","sortLetters":"W","index":815},{"label":"五莲Wulian0633","name":"五莲","pinyin":"Wulian","zip":"0633","sortLetters":"W","index":816},{"label":"武隆Wulong023","name":"武隆","pinyin":"Wulong","zip":"023","sortLetters":"W","index":817},{"label":"武鸣Wuming0771","name":"武鸣","pinyin":"Wuming","zip":"0771","sortLetters":"W","index":818},{"label":"武宁Wuning0792","name":"武宁","pinyin":"Wuning","zip":"0792","sortLetters":"W","index":819},{"label":"武平Wuping0597","name":"武平","pinyin":"Wuping","zip":"0597","sortLetters":"W","index":820},{"label":"巫山Wushan023","name":"巫山","pinyin":"Wushan","zip":"023","sortLetters":"W","index":821},{"label":"无为Wuwei0565","name":"无为","pinyin":"Wuwei","zip":"0565","sortLetters":"W","index":822},{"label":"巫溪Wuxi023","name":"巫溪","pinyin":"Wuxi","zip":"023","sortLetters":"W","index":823},{"label":"武义Wuyi0579","name":"武义","pinyin":"Wuyi","zip":"0579","sortLetters":"W","index":824},{"label":"武夷山Wuyishan0599","name":"武夷山","pinyin":"Wuyishan","zip":"0599","sortLetters":"W","index":825},{"label":"婺源Wuyuan0793","name":"婺源","pinyin":"Wuyuan","zip":"0793","sortLetters":"W","index":826},{"label":"武陟Wuzhi0391","name":"武陟","pinyin":"Wuzhi","zip":"0391","sortLetters":"W","index":827}]},{"sortLetters":"X","items":[{"label":"邢台Xingtai0319","name":"邢台","pinyin":"Xingtai","zip":"0319","sortLetters":"X","index":289},{"label":"西宁Xining0971","name":"西宁","pinyin":"Xining","zip":"0971","sortLetters":"X","index":290},{"label":"新乡Xinxiang0373","name":"新乡","pinyin":"Xinxiang","zip":"0373","sortLetters":"X","index":291},{"label":"信阳Xinyang0376","name":"信阳","pinyin":"Xinyang","zip":"0376","sortLetters":"X","index":292},{"label":"新余Xinyu0790","name":"新余","pinyin":"Xinyu","zip":"0790","sortLetters":"X","index":293},{"label":"忻州Xinzhou0350","name":"忻州","pinyin":"Xinzhou","zip":"0350","sortLetters":"X","index":294},{"label":"西双版纳Xishuangbanna0691","name":"西双版纳","pinyin":"Xishuangbanna","zip":"0691","sortLetters":"X","index":295},{"label":"徐州Xuzhou0516","name":"徐州","pinyin":"Xuzhou","zip":"0516","sortLetters":"X","index":48},{"label":"厦门Xiamen0592","name":"厦门","pinyin":"Xiamen","zip":"0592","sortLetters":"X","index":45},{"label":"西安Xian029","name":"西安","pinyin":"Xian","zip":"029","sortLetters":"X","index":46},{"label":"许昌Xuchang0374","name":"许昌","pinyin":"Xuchang","zip":"0374","sortLetters":"X","index":47},{"label":"襄樊Xiangfan0710","name":"襄樊","pinyin":"Xiangfan","zip":"0710","sortLetters":"X","index":281},{"label":"湘潭Xiangtan0732","name":"湘潭","pinyin":"Xiangtan","zip":"0732","sortLetters":"X","index":282},{"label":"湘西Xiangxi0743","name":"湘西","pinyin":"Xiangxi","zip":"0743","sortLetters":"X","index":283},{"label":"咸宁Xianning0715","name":"咸宁","pinyin":"Xianning","zip":"0715","sortLetters":"X","index":284},{"label":"咸阳Xianyang029","name":"咸阳","pinyin":"Xianyang","zip":"029","sortLetters":"X","index":285},{"label":"孝感Xiaogan0712","name":"孝感","pinyin":"Xiaogan","zip":"0712","sortLetters":"X","index":286},{"label":"锡林郭勒盟Xilinguolemeng0479","name":"锡林郭勒盟","pinyin":"Xilinguolemeng","zip":"0479","sortLetters":"X","index":287},{"label":"兴安盟Xinganmeng0482","name":"兴安盟","pinyin":"Xinganmeng","zip":"0482","sortLetters":"X","index":288},{"label":"峡江Xiajiang0796","name":"峡江","pinyin":"Xiajiang","zip":"0796","sortLetters":"X","index":828},{"label":"夏津Xiajin0534","name":"夏津","pinyin":"Xiajin","zip":"0534","sortLetters":"X","index":829},{"label":"象山Xiangshan0574","name":"象山","pinyin":"Xiangshan","zip":"0574","sortLetters":"X","index":830},{"label":"响水Xiangshui0515","name":"响水","pinyin":"Xiangshui","zip":"0515","sortLetters":"X","index":831},{"label":"仙居Xianju0576","name":"仙居","pinyin":"Xianju","zip":"0576","sortLetters":"X","index":832},{"label":"仙游Xianyou0594","name":"仙游","pinyin":"Xianyou","zip":"0594","sortLetters":"X","index":833},{"label":"萧县Xiaoxian0557","name":"萧县","pinyin":"Xiaoxian","zip":"0557","sortLetters":"X","index":834},{"label":"霞浦Xiapu0593","name":"霞浦","pinyin":"Xiapu","zip":"0593","sortLetters":"X","index":835},{"label":"息烽Xifeng0851","name":"息烽","pinyin":"Xifeng","zip":"0851","sortLetters":"X","index":836},{"label":"新安Xinan0379","name":"新安","pinyin":"Xinan","zip":"0379","sortLetters":"X","index":837},{"label":"新昌Xinchang0575","name":"新昌","pinyin":"Xinchang","zip":"0575","sortLetters":"X","index":838},{"label":"信丰Xinfeng0797","name":"信丰","pinyin":"Xinfeng","zip":"0797","sortLetters":"X","index":839},{"label":"新丰Xinfeng0751","name":"新丰","pinyin":"Xinfeng","zip":"0751","sortLetters":"X","index":840},{"label":"新干Xingan0796","name":"新干","pinyin":"Xingan","zip":"0796","sortLetters":"X","index":841},{"label":"兴国Xingguo0797","name":"兴国","pinyin":"Xingguo","zip":"0797","sortLetters":"X","index":842},{"label":"兴化Xinghua0523","name":"兴化","pinyin":"Xinghua","zip":"0523","sortLetters":"X","index":843},{"label":"兴宁Xingning0753","name":"兴宁","pinyin":"Xingning","zip":"0753","sortLetters":"X","index":844},{"label":"行唐Xingtang0311","name":"行唐","pinyin":"Xingtang","zip":"0311","sortLetters":"X","index":845},{"label":"荥阳Xingyang0371","name":"荥阳","pinyin":"Xingyang","zip":"0371","sortLetters":"X","index":846},{"label":"星子Xingzi0792","name":"星子","pinyin":"Xingzi","zip":"0792","sortLetters":"X","index":847},{"label":"辛集Xinji0311","name":"辛集","pinyin":"Xinji","zip":"0311","sortLetters":"X","index":848},{"label":"新建Xinjian0791","name":"新建","pinyin":"Xinjian","zip":"0791","sortLetters":"X","index":849},{"label":"新津Xinjin028","name":"新津","pinyin":"Xinjin","zip":"028","sortLetters":"X","index":850},{"label":"新乐Xinle0311","name":"新乐","pinyin":"Xinle","zip":"0311","sortLetters":"X","index":851},{"label":"新民Xinmin024","name":"新民","pinyin":"Xinmin","zip":"024","sortLetters":"X","index":852},{"label":"新密Xinmi0371","name":"新密","pinyin":"Xinmi","zip":"0371","sortLetters":"X","index":853},{"label":"新泰Xintai0538","name":"新泰","pinyin":"Xintai","zip":"0538","sortLetters":"X","index":854},{"label":"新兴Xinxing0766","name":"新兴","pinyin":"Xinxing","zip":"0766","sortLetters":"X","index":855},{"label":"新沂Xinyi0516","name":"新沂","pinyin":"Xinyi","zip":"0516","sortLetters":"X","index":856},{"label":"信宜Xinyi0668","name":"信宜","pinyin":"Xinyi","zip":"0668","sortLetters":"X","index":857},{"label":"新郑Xinzheng0371","name":"新郑","pinyin":"Xinzheng","zip":"0371","sortLetters":"X","index":858},{"label":"休宁Xiuning0559","name":"休宁","pinyin":"Xiuning","zip":"0559","sortLetters":"X","index":859},{"label":"秀山Xiushan023","name":"秀山","pinyin":"Xiushan","zip":"023","sortLetters":"X","index":860},{"label":"修水Xiushui0792","name":"修水","pinyin":"Xiushui","zip":"0792","sortLetters":"X","index":861},{"label":"修文Xiuwen0851","name":"修文","pinyin":"Xiuwen","zip":"0851","sortLetters":"X","index":862},{"label":"修武Xiuwu0391","name":"修武","pinyin":"Xiuwu","zip":"0391","sortLetters":"X","index":863},{"label":"寻甸Xundian0871","name":"寻甸","pinyin":"Xundian","zip":"0871","sortLetters":"X","index":864},{"label":"寻乌Xunwu0797","name":"寻乌","pinyin":"Xunwu","zip":"0797","sortLetters":"X","index":865},{"label":"徐闻Xuwen0759","name":"徐闻","pinyin":"Xuwen","zip":"0759","sortLetters":"X","index":866},{"label":"盱眙Xuyi0517","name":"盱眙","pinyin":"Xuyi","zip":"0517","sortLetters":"X","index":867},{"label":"厦门Xiamen0592","name":"厦门","pinyin":"Xiamen","zip":"0592","sortLetters":"X","index":45},{"label":"徐州Xuzhou0516","name":"徐州","pinyin":"Xuzhou","zip":"0516","sortLetters":"X","index":48}]},{"sortLetters":"Y","items":[{"label":"延边Yanbian0433","name":"延边","pinyin":"Yanbian","zip":"0433","sortLetters":"Y","index":299},{"label":"盐城Yancheng0515","name":"盐城","pinyin":"Yancheng","zip":"0515","sortLetters":"Y","index":300},{"label":"阳江Yangjiang0662","name":"阳江","pinyin":"Yangjiang","zip":"0662","sortLetters":"Y","index":301},{"label":"烟台Yantai0535","name":"烟台","pinyin":"Yantai","zip":"0535","sortLetters":"Y","index":50},{"label":"阳泉Yangquan0353","name":"阳泉","pinyin":"Yangquan","zip":"0353","sortLetters":"Y","index":302},{"label":"雅安Yaan0835","name":"雅安","pinyin":"Yaan","zip":"0835","sortLetters":"Y","index":297},{"label":"延安Yanan0911","name":"延安","pinyin":"Yanan","zip":"0911","sortLetters":"Y","index":298},{"label":"宜宾Yibin0831","name":"宜宾","pinyin":"Yibin","zip":"0831","sortLetters":"Y","index":303},{"label":"宜昌Yichang0717","name":"宜昌","pinyin":"Yichang","zip":"0717","sortLetters":"Y","index":304},{"label":"伊春Yichun0458","name":"伊春","pinyin":"Yichun","zip":"0458","sortLetters":"Y","index":305},{"label":"宜春Yichun0795","name":"宜春","pinyin":"Yichun","zip":"0795","sortLetters":"Y","index":306},{"label":"伊犁哈萨克Yilihasake0999","name":"伊犁哈萨克","pinyin":"Yilihasake","zip":"0999","sortLetters":"Y","index":307},{"label":"银川Yinchuan0951","name":"银川","pinyin":"Yinchuan","zip":"0951","sortLetters":"Y","index":308},{"label":"营口Yingkou0417","name":"营口","pinyin":"Yingkou","zip":"0417","sortLetters":"Y","index":309},{"label":"鹰潭Yingtan0701","name":"鹰潭","pinyin":"Yingtan","zip":"0701","sortLetters":"Y","index":310},{"label":"益阳Yiyang0737","name":"益阳","pinyin":"Yiyang","zip":"0737","sortLetters":"Y","index":311},{"label":"永州Yongzhou0746","name":"永州","pinyin":"Yongzhou","zip":"0746","sortLetters":"Y","index":312},{"label":"岳阳Yueyang0730","name":"岳阳","pinyin":"Yueyang","zip":"0730","sortLetters":"Y","index":313},{"label":"玉林Yulin0775","name":"玉林","pinyin":"Yulin","zip":"0775","sortLetters":"Y","index":314},{"label":"榆林Yulin0912","name":"榆林","pinyin":"Yulin","zip":"0912","sortLetters":"Y","index":315},{"label":"运城Yuncheng0359","name":"运城","pinyin":"Yuncheng","zip":"0359","sortLetters":"Y","index":316},{"label":"云浮Yunfu0766","name":"云浮","pinyin":"Yunfu","zip":"0766","sortLetters":"Y","index":317},{"label":"玉树Yushu0976","name":"玉树","pinyin":"Yushu","zip":"0976","sortLetters":"Y","index":318},{"label":"玉溪Yuxi0877","name":"玉溪","pinyin":"Yuxi","zip":"0877","sortLetters":"Y","index":319},{"label":"阳春Yangchun0662","name":"阳春","pinyin":"Yangchun","zip":"0662","sortLetters":"Y","index":868},{"label":"阳东Yangdong0662","name":"阳东","pinyin":"Yangdong","zip":"0662","sortLetters":"Y","index":869},{"label":"阳谷Yanggu0635","name":"阳谷","pinyin":"Yanggu","zip":"0635","sortLetters":"Y","index":870},{"label":"阳山Yangshan0763","name":"阳山","pinyin":"Yangshan","zip":"0763","sortLetters":"Y","index":871},{"label":"阳信Yangxin0543","name":"阳信","pinyin":"Yangxin","zip":"0543","sortLetters":"Y","index":872},{"label":"阳西Yangxi0662","name":"阳西","pinyin":"Yangxi","zip":"0662","sortLetters":"Y","index":873},{"label":"扬中Yangzhong0511","name":"扬中","pinyin":"Yangzhong","zip":"0511","sortLetters":"Y","index":874},{"label":"偃师Yanshi0379","name":"偃师","pinyin":"Yanshi","zip":"0379","sortLetters":"Y","index":875},{"label":"延寿Yanshou0451","name":"延寿","pinyin":"Yanshou","zip":"0451","sortLetters":"Y","index":876},{"label":"兖州Yanzhou0537","name":"兖州","pinyin":"Yanzhou","zip":"0537","sortLetters":"Y","index":877},{"label":"伊川Yichuan0379","name":"伊川","pinyin":"Yichuan","zip":"0379","sortLetters":"Y","index":878},{"label":"宜丰Yifeng0795","name":"宜丰","pinyin":"Yifeng","zip":"0795","sortLetters":"Y","index":879},{"label":"宜黄Yihuang0794","name":"宜黄","pinyin":"Yihuang","zip":"0794","sortLetters":"Y","index":880},{"label":"依兰Yilan0451","name":"依兰","pinyin":"Yilan","zip":"0451","sortLetters":"Y","index":881},{"label":"宜良Yiliang0871","name":"宜良","pinyin":"Yiliang","zip":"0871","sortLetters":"Y","index":882},{"label":"沂南Yinan0539","name":"沂南","pinyin":"Yinan","zip":"0539","sortLetters":"Y","index":883},{"label":"英德Yingde0763","name":"英德","pinyin":"Yingde","zip":"0763","sortLetters":"Y","index":884},{"label":"颍上Yingshang0558","name":"颍上","pinyin":"Yingshang","zip":"0558","sortLetters":"Y","index":885},{"label":"沂水Yishui0539","name":"沂水","pinyin":"Yishui","zip":"0539","sortLetters":"Y","index":886},{"label":"义乌Yiwu0579","name":"义乌","pinyin":"Yiwu","zip":"0579","sortLetters":"Y","index":887},{"label":"黟县Yixian0559","name":"黟县","pinyin":"Yixian","zip":"0559","sortLetters":"Y","index":888},{"label":"宜兴Yixing0510","name":"宜兴","pinyin":"Yixing","zip":"0510","sortLetters":"Y","index":889},{"label":"弋阳Yiyang0793","name":"弋阳","pinyin":"Yiyang","zip":"0793","sortLetters":"Y","index":890},{"label":"宜阳Yiyang0379","name":"宜阳","pinyin":"Yiyang","zip":"0379","sortLetters":"Y","index":891},{"label":"沂源Yiyuan0533","name":"沂源","pinyin":"Yiyuan","zip":"0533","sortLetters":"Y","index":892},{"label":"仪征Yizheng0514","name":"仪征","pinyin":"Yizheng","zip":"0514","sortLetters":"Y","index":893},{"label":"永安Yongan0598","name":"永安","pinyin":"Yongan","zip":"0598","sortLetters":"Y","index":894},{"label":"永川Yongchuan023","name":"永川","pinyin":"Yongchuan","zip":"023","sortLetters":"Y","index":895},{"label":"永春Yongchun0595","name":"永春","pinyin":"Yongchun","zip":"0595","sortLetters":"Y","index":896},{"label":"永登Yongdeng0931","name":"永登","pinyin":"Yongdeng","zip":"0931","sortLetters":"Y","index":897},{"label":"永定Yongding0597","name":"永定","pinyin":"Yongding","zip":"0597","sortLetters":"Y","index":898},{"label":"永丰Yongfeng0796","name":"永丰","pinyin":"Yongfeng","zip":"0796","sortLetters":"Y","index":899},{"label":"永吉Yongji0423","name":"永吉","pinyin":"Yongji","zip":"0423","sortLetters":"Y","index":900},{"label":"永嘉Yongjia0577","name":"永嘉","pinyin":"Yongjia","zip":"0577","sortLetters":"Y","index":901},{"label":"永康Yongkang0579","name":"永康","pinyin":"Yongkang","zip":"0579","sortLetters":"Y","index":902},{"label":"邕宁Yongning0771","name":"邕宁","pinyin":"Yongning","zip":"0771","sortLetters":"Y","index":903},{"label":"永泰Yongtai0591","name":"永泰","pinyin":"Yongtai","zip":"0591","sortLetters":"Y","index":904},{"label":"永新Yongxin0796","name":"永新","pinyin":"Yongxin","zip":"0796","sortLetters":"Y","index":905},{"label":"永修Yongxiu0792","name":"永修","pinyin":"Yongxiu","zip":"0792","sortLetters":"Y","index":906},{"label":"尤溪Youxi0598","name":"尤溪","pinyin":"Youxi","zip":"0598","sortLetters":"Y","index":907},{"label":"酉阳Youyang023","name":"酉阳","pinyin":"Youyang","zip":"023","sortLetters":"Y","index":908},{"label":"元氏Yuanshi0311","name":"元氏","pinyin":"Yuanshi","zip":"0311","sortLetters":"Y","index":909},{"label":"禹城Yucheng0534","name":"禹城","pinyin":"Yucheng","zip":"0534","sortLetters":"Y","index":910},{"label":"于都Yudu0797","name":"于都","pinyin":"Yudu","zip":"0797","sortLetters":"Y","index":911},{"label":"岳西Yuexi0556","name":"岳西","pinyin":"Yuexi","zip":"0556","sortLetters":"Y","index":912},{"label":"余干Yugan0793","name":"余干","pinyin":"Yugan","zip":"0793","sortLetters":"Y","index":913},{"label":"玉环Yuhuan0576","name":"玉环","pinyin":"Yuhuan","zip":"0576","sortLetters":"Y","index":914},{"label":"余江Yujiang0701","name":"余江","pinyin":"Yujiang","zip":"0701","sortLetters":"Y","index":915},{"label":"郁南Yunan0766","name":"郁南","pinyin":"Yunan","zip":"0766","sortLetters":"Y","index":916},{"label":"云安Yunan0766","name":"云安","pinyin":"Yunan","zip":"0766","sortLetters":"Y","index":917},{"label":"郓城Yuncheng0530","name":"郓城","pinyin":"Yuncheng","zip":"0530","sortLetters":"Y","index":918},{"label":"云和Yunhe0578","name":"云和","pinyin":"Yunhe","zip":"0578","sortLetters":"Y","index":919},{"label":"云霄Yunxiao0596","name":"云霄","pinyin":"Yunxiao","zip":"0596","sortLetters":"Y","index":920},{"label":"云阳Yunyang023","name":"云阳","pinyin":"Yunyang","zip":"023","sortLetters":"Y","index":921},{"label":"玉山Yushan0793","name":"玉山","pinyin":"Yushan","zip":"0793","sortLetters":"Y","index":922},{"label":"榆树Yushu0431","name":"榆树","pinyin":"Yushu","zip":"0431","sortLetters":"Y","index":923},{"label":"鱼台Yutai0537","name":"鱼台","pinyin":"Yutai","zip":"0537","sortLetters":"Y","index":924},{"label":"玉田Yutian0315","name":"玉田","pinyin":"Yutian","zip":"0315","sortLetters":"Y","index":925},{"label":"余姚Yuyao0574","name":"余姚","pinyin":"Yuyao","zip":"0574","sortLetters":"Y","index":926},{"label":"榆中Yuzhong0931","name":"榆中","pinyin":"Yuzhong","zip":"0931","sortLetters":"Y","index":927}]},{"sortLetters":"Z","items":[{"label":"周口Zhoukou0394","name":"周口","pinyin":"Zhoukou","zip":"0394","sortLetters":"Z","index":329},{"label":"舟山Zhoushan0580","name":"舟山","pinyin":"Zhoushan","zip":"0580","sortLetters":"Z","index":330},{"label":"驻马店Zhumadian0396","name":"驻马店","pinyin":"Zhumadian","zip":"0396","sortLetters":"Z","index":331},{"label":"株洲Zhuzhou0731","name":"株洲","pinyin":"Zhuzhou","zip":"0731","sortLetters":"Z","index":332},{"label":"淄博Zibo0533","name":"淄博","pinyin":"Zibo","zip":"0533","sortLetters":"Z","index":333},{"label":"自贡Zigong0813","name":"自贡","pinyin":"Zigong","zip":"0813","sortLetters":"Z","index":334},{"label":"资阳Ziyang028","name":"资阳","pinyin":"Ziyang","zip":"028","sortLetters":"Z","index":335},{"label":"枣庄Zaozhuang0623","name":"枣庄","pinyin":"Zaozhuang","zip":"0623","sortLetters":"Z","index":320},{"label":"张家界Zhangjiajie0744","name":"张家界","pinyin":"Zhangjiajie","zip":"0744","sortLetters":"Z","index":321},{"label":"张家口Zhangjiakou0313","name":"张家口","pinyin":"Zhangjiakou","zip":"0313","sortLetters":"Z","index":322},{"label":"张掖Zhangye0936","name":"张掖","pinyin":"Zhangye","zip":"0936","sortLetters":"Z","index":323},{"label":"湛江Zhanjiang0759","name":"湛江","pinyin":"Zhanjiang","zip":"0759","sortLetters":"Z","index":324},{"label":"遵义Zunyi0852","name":"遵义","pinyin":"Zunyi","zip":"0852","sortLetters":"Z","index":336},{"label":"中山Zhongshan0760","name":"中山","pinyin":"Zhongshan","zip":"0760","sortLetters":"Z","index":53},{"label":"珠海Zhuhai0756","name":"珠海","pinyin":"Zhuhai","zip":"0756","sortLetters":"Z","index":54},{"label":"郑州Zhengzhou0371","name":"郑州","pinyin":"Zhengzhou","zip":"0371","sortLetters":"Z","index":52},{"label":"漳州Zhangzhou0596","name":"漳州","pinyin":"Zhangzhou","zip":"0596","sortLetters":"Z","index":51},{"label":"昭通Zhaotong0870","name":"昭通","pinyin":"Zhaotong","zip":"0870","sortLetters":"Z","index":326},{"label":"镇江Zhenjiang0511","name":"镇江","pinyin":"Zhenjiang","zip":"0511","sortLetters":"Z","index":327},{"label":"中卫Zhongwei0955","name":"中卫","pinyin":"Zhongwei","zip":"0955","sortLetters":"Z","index":328},{"label":"赞皇Zanhuang0311","name":"赞皇","pinyin":"Zanhuang","zip":"0311","sortLetters":"Z","index":928},{"label":"增城Zengcheng020","name":"增城","pinyin":"Zengcheng","zip":"020","sortLetters":"Z","index":929},{"label":"张家港Zhangjiagang0512","name":"张家港","pinyin":"Zhangjiagang","zip":"0512","sortLetters":"Z","index":930},{"label":"漳平Zhangping0597","name":"漳平","pinyin":"Zhangping","zip":"0597","sortLetters":"Z","index":931},{"label":"漳浦Zhangpu0596","name":"漳浦","pinyin":"Zhangpu","zip":"0596","sortLetters":"Z","index":932},{"label":"章丘Zhangqiu0531","name":"章丘","pinyin":"Zhangqiu","zip":"0531","sortLetters":"Z","index":933},{"label":"樟树Zhangshu0795","name":"樟树","pinyin":"Zhangshu","zip":"0795","sortLetters":"Z","index":934},{"label":"沾化Zhanhua0543","name":"沾化","pinyin":"Zhanhua","zip":"0543","sortLetters":"Z","index":935},{"label":"赵县Zhaoxian0311","name":"赵县","pinyin":"Zhaoxian","zip":"0311","sortLetters":"Z","index":936},{"label":"招远Zhaoyuan0535","name":"招远","pinyin":"Zhaoyuan","zip":"0535","sortLetters":"Z","index":937},{"label":"正定Zhengding0311","name":"正定","pinyin":"Zhengding","zip":"0311","sortLetters":"Z","index":938},{"label":"政和Zhenghe0599","name":"政和","pinyin":"Zhenghe","zip":"0599","sortLetters":"Z","index":939},{"label":"柘荣Zherong0593","name":"柘荣","pinyin":"Zherong","zip":"0593","sortLetters":"Z","index":940},{"label":"中牟Zhongmou0371","name":"中牟","pinyin":"Zhongmou","zip":"0371","sortLetters":"Z","index":941},{"label":"忠县Zhongxian023","name":"忠县","pinyin":"Zhongxian","zip":"023","sortLetters":"Z","index":942},{"label":"周宁Zhouning0593","name":"周宁","pinyin":"Zhouning","zip":"0593","sortLetters":"Z","index":943},{"label":"周至Zhouzhi029","name":"周至","pinyin":"Zhouzhi","zip":"029","sortLetters":"Z","index":944},{"label":"庄河Zhuanghe0411","name":"庄河","pinyin":"Zhuanghe","zip":"0411","sortLetters":"Z","index":945},{"label":"诸城Zhucheng0536","name":"诸城","pinyin":"Zhucheng","zip":"0536","sortLetters":"Z","index":946},{"label":"诸暨Zhuji0575","name":"诸暨","pinyin":"Zhuji","zip":"0575","sortLetters":"Z","index":947},{"label":"紫金Zijin0762","name":"紫金","pinyin":"Zijin","zip":"0762","sortLetters":"Z","index":948},{"label":"资溪Zixi0794","name":"资溪","pinyin":"Zixi","zip":"0794","sortLetters":"Z","index":949},{"label":"邹城Zoucheng0537","name":"邹城","pinyin":"Zoucheng","zip":"0537","sortLetters":"Z","index":950},{"label":"邹平Zouping0543","name":"邹平","pinyin":"Zouping","zip":"0543","sortLetters":"Z","index":951},{"label":"遵化Zunhua0315","name":"遵化","pinyin":"Zunhua","zip":"0315","sortLetters":"Z","index":952}]}] -------------------------------------------------------------------------------- /App/CityList/Config/hotCities.js: -------------------------------------------------------------------------------- 1 | export default { 2 | "sortLetters": "热门城市", 3 | "items": [ 4 | { "name": "上海", "pinyin": "shanghai", "zip": "0837", }, 5 | { "name": "广州", "pinyin": "Aba", "zip": "0837", }, 6 | { "name": "深圳", "pinyin": "Aba", "zip": "0837", }, 7 | { "name": "青岛", "pinyin": "Aba", "zip": "0837", }, 8 | { "name": "杭州", "pinyin": "Aba", "zip": "0837", }, 9 | { "name": "南京", "pinyin": "Aba", "zip": "0837", }, 10 | ] 11 | } -------------------------------------------------------------------------------- /App/CityList/Images/Close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/App/CityList/Images/Close.png -------------------------------------------------------------------------------- /App/CityList/Images/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/App/CityList/Images/location.png -------------------------------------------------------------------------------- /App/CityList/Styles.js: -------------------------------------------------------------------------------- 1 | import { StyleSheet, Dimensions } from 'react-native' 2 | import { Colors, Fonts, Px } from '../Themes' 3 | export default StyleSheet.create({ 4 | Box: { 5 | flex: 1, 6 | paddingLeft: Px(8), 7 | backgroundColor: Colors.subsidiary_white, 8 | }, 9 | SectionBox: { 10 | height: Px(87), 11 | paddingLeft: Px(17), 12 | flexDirection: 'row', 13 | alignItems: 'center', 14 | backgroundColor: Colors.subsidiary_white, 15 | }, 16 | SectionText: { 17 | fontSize: Fonts.size.s, 18 | color: Colors.subsidiary_text 19 | }, 20 | ItemBox: { 21 | height: Px(80), 22 | paddingLeft: Px(17), 23 | flexDirection: 'row', 24 | alignItems: 'center', 25 | backgroundColor: Colors.white, 26 | }, 27 | ItemTetx: { 28 | fontSize: Fonts.size.s, 29 | color: Colors.subsidiary_black 30 | }, 31 | border: { 32 | height: 1, 33 | left: Px(18), 34 | right: Px(26), 35 | bottom: 0, 36 | position: 'absolute', 37 | backgroundColor: Colors.border 38 | }, 39 | FlatBox: { 40 | marginLeft: Px(4) 41 | }, 42 | flatItemBox: { 43 | borderRadius: Px(5), 44 | marginLeft: Px(14), 45 | marginBottom: Px(14), 46 | width: Px(210), 47 | height: Px(62), 48 | alignItems: 'center', 49 | justifyContent: 'center', 50 | backgroundColor: Colors.white, 51 | }, 52 | LocatingBox: { 53 | flexDirection: 'row', 54 | backgroundColor: Colors.Subject, 55 | }, 56 | ImageStyles: { 57 | height: Px(26), 58 | width: Px(21), 59 | marginRight: Px(8) 60 | }, 61 | showHeaderStyle: { 62 | color: Colors.subsidiary_black 63 | }, 64 | showHeaderBoxStyle: { 65 | backgroundColor: '#FFAB24', 66 | borderRadius: Px(6) 67 | } 68 | }) 69 | -------------------------------------------------------------------------------- /App/CityList/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component, Fragment } from 'react' 2 | import { 3 | View, 4 | Text, 5 | Image, 6 | FlatList, TouchableOpacity, 7 | } from 'react-native' 8 | import { Colors, Styles, Px } from '../Themes' 9 | import List from '../Components/List' 10 | import styles from './Styles' 11 | import cityIndex from './Config/cityIndex' 12 | import hotCities from './Config/hotCities' 13 | import alphabeticalIndex from './Config/alphabeticalIndex' 14 | import location from './Images/location.png' 15 | import close from './Images/Close.png' 16 | import Header from '../Components/Header'; 17 | import PropTypes from 'prop-types' 18 | const Section_Height = Px(87) 19 | const Index_Height = Px(80) 20 | const HotHeight = Px(402) 21 | export default class CityList extends Component { 22 | static propTypes = { 23 | ChoosingCity: PropTypes.func, 24 | closeModal: PropTypes.func, 25 | } 26 | constructor(props) { 27 | super(props) 28 | } 29 | _renderSection = (index) => { 30 | const contact = cityIndex[index]; 31 | return ( 32 | 33 | {contact.sortLetters} 34 | 35 | ) 36 | } 37 | _renderItem = ({ section: section, row: row }) => { 38 | const item = cityIndex[section].items[row]; 39 | return ( 40 | this.props.ChoosingCity(item.name)} 42 | > 43 | {item.name} 44 | 45 | 46 | ) 47 | } 48 | _flatItem = ({ item, index }) => { 49 | return ( 50 | this.props.ChoosingCity(item.name)} 52 | > 53 | {item.name} 54 | 55 | ) 56 | } 57 | LocatingCity = _ => { 58 | return ( 59 | 60 | 61 | 当前定位城市 62 | 63 | 64 | 65 | 北京市 66 | 67 | 68 | ) 69 | } 70 | _renderHeader = _ => { 71 | return ( 72 | 73 | {this.LocatingCity()} 74 | 75 | {hotCities.sortLetters} 76 | 77 | 78 | `item${index}`} 83 | /> 84 | 85 | 86 | 87 | ) 88 | } 89 | _LeftComponent = _ => { 90 | return ( 91 | 94 | 95 | 96 | ) 97 | } 98 | _UpPullRefresh = _ => { 99 | this._list.endUpPullRefresh() 100 | } 101 | render() { 102 | return ( 103 | 104 |
109 |
110 | 111 | (this._list = ref)} 119 | Section_Height={Section_Height} 120 | renderHeader={this._renderHeader} 121 | UpPullRefresh={this._UpPullRefresh} 122 | renderSection={this._renderSection} 123 | showHeaderStyle={styles.showHeaderStyle} 124 | showHeaderBoxStyle={styles.showHeaderBoxStyle} 125 | /> 126 | 127 |
128 | ) 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /App/Components/Header/Style.js: -------------------------------------------------------------------------------- 1 | import { StyleSheet, Platform, StatusBar } from 'react-native'; 2 | import { Colors, Fonts, Px } from '../../Themes' 3 | 4 | 5 | const statusBarHeight = Platform.OS === 'android' ? StatusBar.currentHeight : 0 6 | export default StyleSheet.create({ 7 | statusBarStyle: { paddingTop: statusBarHeight }, 8 | headerStyle: { 9 | height: Px(88), 10 | flexDirection: 'row', 11 | alignItems: 'center', 12 | justifyContent: 'space-between', 13 | paddingHorizontal: Px(33), 14 | }, 15 | titleStyle: { 16 | fontSize: Fonts.size.m, 17 | color: Colors.subsidiary_black, 18 | fontWeight: '500' 19 | }, 20 | leftStyle: { flex: 1, flexDirection: 'row' }, 21 | rightStyle: { flex: 1, flexDirection: 'row-reverse' } 22 | }) -------------------------------------------------------------------------------- /App/Components/Header/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { View, StatusBar, Text, ViewPropTypes } from 'react-native' 3 | import PropTypes from 'prop-types' 4 | import styles from './Style' 5 | import { Colors, Px } from '../../Themes'; 6 | 7 | export default class Header extends React.Component { 8 | constructor(props) { 9 | super(props); 10 | 11 | } 12 | static propsTypes = { 13 | LeftComponent: PropTypes.element, // 左边的组件 14 | RightComponent: PropTypes.element, // 右边的组件 15 | titleComponent: PropTypes.element, // 标题的组件,优先级高,设置此属性,title失效 16 | title: PropTypes.string, // 标题 17 | headerStyle: ViewPropTypes.style, // 头部样式 18 | titleStyle: PropTypes.object, // 标题样式,当设置titleComponent属性以后,此样式失效 19 | titleColor: PropTypes.string, // 标题颜色 20 | headerBgColor: PropTypes.string, // 头部颜色 21 | showStatusBar: PropTypes.bool, // 是否设置状态栏 22 | } 23 | static defaultProps = { 24 | showStatusBar: true // 状态栏默认设置 25 | } 26 | render() { 27 | const { LeftComponent, RightComponent, TitleComponent, title, headerStyle, 28 | titleStyle, headerBgColor, titleColor, showStatusBar } = this.props 29 | return 30 | { 31 | showStatusBar && 32 | 36 | } 37 | 38 | 39 | {LeftComponent ? : } 40 | 41 | {TitleComponent ? : {title}} 42 | 43 | {RightComponent ? : } 44 | 45 | 46 | 47 | } 48 | } -------------------------------------------------------------------------------- /App/Components/List/Styles.js: -------------------------------------------------------------------------------- 1 | import { StyleSheet } from 'react-native' 2 | import { Colors } from '../../Themes' 3 | export default StyleSheet.create({ 4 | Box: { 5 | flex: 1, 6 | }, 7 | flatBox: { 8 | position: 'absolute', 9 | right: 5, 10 | }, 11 | indexText: { 12 | color: Colors.indexColor 13 | }, 14 | TextBox: { 15 | width: 20, 16 | justifyContent: 'center', 17 | alignItems: 'center' 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /App/Components/List/UpPullLoading/arrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/App/Components/List/UpPullLoading/arrow@2x.png -------------------------------------------------------------------------------- /App/Components/List/UpPullLoading/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { 3 | Animated, 4 | View, 5 | StyleSheet, 6 | Text 7 | } from "react-native"; 8 | import arrow from './arrow.png' 9 | import { Colors } from "../../../Themes"; 10 | import Spinner from "react-native-spinkit"; 11 | import { RefreshHeader } from "react-native-spring-scrollview/RefreshHeader"; 12 | export default class UpPullLoading extends RefreshHeader { 13 | static height = 80; 14 | 15 | static style = "stickyContent"; 16 | 17 | render() { 18 | return ( 19 | 20 | {this._renderIcon()} 21 | {this._renderText()} 22 | 23 | ); 24 | } 25 | _renderText = _ => { 26 | const s = this.state.status; 27 | if (s === 'refreshing') { 28 | return ( 29 | 30 | ) 31 | } else { 32 | return ( 33 | 34 | 35 | {this.getTitle()} 36 | 37 | 38 | ) 39 | } 40 | } 41 | _renderIcon = _ => { 42 | const s = this.state.status; 43 | if (s === "refreshing") { 44 | return 45 | } 46 | const { maxHeight, offset } = this.props; 47 | return ( 48 | 62 | ); 63 | } 64 | 65 | getTitle() { 66 | const s = this.state.status; 67 | switch (s) { 68 | case "pulling": 69 | return "下拉刷新" 70 | case "waiting": 71 | return "下拉刷新" 72 | case "pullingEnough": 73 | return "松开刷新" 74 | case "refreshing": 75 | return "请稍等..." 76 | case "pullingCancel": 77 | return "放弃刷新" 78 | case "rebound": 79 | return "刷新完成" 80 | default: 81 | break; 82 | } 83 | } 84 | } 85 | const styles = StyleSheet.create({ 86 | container: { 87 | flex: 1, 88 | alignItems: "center", 89 | justifyContent: "center", 90 | flexDirection: "row" 91 | }, 92 | rContainer: { 93 | marginLeft: 10 94 | }, 95 | text: { 96 | marginVertical: 5, 97 | fontSize: 15, 98 | color: Colors.Subject, 99 | } 100 | }); -------------------------------------------------------------------------------- /App/Components/List/index.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import { 3 | View, 4 | Text, 5 | Dimensions, 6 | FlatList, 7 | TouchableOpacity, 8 | ViewPropTypes, 9 | } from 'react-native' 10 | import styles from './Styles' 11 | import PropTypes from 'prop-types' 12 | let screenH = Dimensions.get('window').height; 13 | import UpPullLoading from './UpPullLoading' 14 | import { LargeList } from "react-native-largelist-v3"; 15 | export default class List extends Component { 16 | static propTypes = { 17 | UpPullRefresh: PropTypes.func, //是否展示下拉刷新,下拉刷新的回调 18 | showHeader: PropTypes.bool, //是否展示头部组件 19 | renderHeader: PropTypes.func, //头部组件 20 | renderSection: PropTypes.func, //分組頭组建 21 | renderItem: PropTypes.func, //分組每一項组件 22 | ItemBoxStyle: ViewPropTypes.style, //导航容器样式 23 | showHeaderBoxStyle: ViewPropTypes.style, //导航第一个容器额外样式 24 | showHeaderStyle: PropTypes.object, //导航第一个Text的额外样式 25 | flatBoxStyle: ViewPropTypes.style, //導航List的样式 26 | letterStyle: PropTypes.object, //導航每一個Text的样式 27 | indexArray: PropTypes.array, //导航數組,有则展示右侧导航 28 | dataArray: PropTypes.array.isRequired, //数据源数组 29 | HeaderHeight: PropTypes.number, //头部高度 30 | Section_Height: PropTypes.number.isRequired,//分組組頭的高度 31 | Index_Height: PropTypes.number.isRequired, //分組每一項的高度 32 | } 33 | static defaultProps = { 34 | Index_Height: 50, 35 | Section_Height: 0, 36 | showHeader: false, //默认不展示头部 37 | UpPullRefresh: () => null, 38 | renderSection: () => null, 39 | }; 40 | constructor(props) { 41 | super(props) 42 | } 43 | componentWillUnmount() { 44 | this.timer && clearTimeout(this.timer) 45 | } 46 | getOfset = (key) => { 47 | const { dataArray, Index_Height, Section_Height, HeaderHeight, showHeader } = this.props 48 | let [hKey, itemkey, sectionKey, hot_height] = [key, 0, 0, 0] 49 | if (showHeader) { 50 | if (key > 0) hKey = key - 1 51 | hot_height = key ? HeaderHeight : 0 52 | } 53 | for (i = 0; i < hKey; i++) { 54 | for (index = 0, len = dataArray[i].items.length; index < len; index++) { 55 | itemkey++ 56 | } 57 | sectionKey++ 58 | } 59 | return (itemkey * Index_Height + sectionKey * Section_Height) + hot_height 60 | } 61 | _onSectionselect = (value, key) => { 62 | const ofset = this.getOfset(key) 63 | if (this._LargeList) { 64 | this._LargeList.scrollTo({ 65 | x: 0, y: ofset 66 | }); 67 | } 68 | }; 69 | _renderFooter = () => { 70 | return ( 71 | 72 | ) 73 | } 74 | _FlatItem = ({ item, index }) => { 75 | const { ItemBoxStyle, letterStyle, showHeaderBoxStyle, showHeaderStyle } = this.props 76 | const hot = index == 0 77 | return ( 78 | this._onSectionselect(e, index)}> 80 | 81 | {item} 82 | 83 | 84 | ) 85 | } 86 | endUpPullRefresh = _ => { 87 | this.timer = setTimeout(() => { 88 | if (this._LargeList) 89 | this._LargeList.endRefresh(); 90 | }, 1000); 91 | } 92 | render() { 93 | const { indexArray, dataArray, Section_Height, Index_Height, showHeader, renderItem, 94 | UpPullRefresh, renderSection, renderHeader } = this.props 95 | const top_offset = indexArray ? (screenH - indexArray.length * 15) / 3 : 0 96 | return ( 97 | 98 | (this._LargeList = ref)} 106 | heightForSection={() => Section_Height} 107 | heightForIndexPath={() => Index_Height} 108 | renderHeader={showHeader ? renderHeader : () => null} 109 | /> 110 | { 111 | indexArray && 112 | 115 | index.toString()} //不重复的key 119 | initialNumToRender={indexArray ? indexArray.length : 10} 120 | /> 121 | 122 | } 123 | 124 | ) 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /App/Themes/Colors.js: -------------------------------------------------------------------------------- 1 | const colors = { 2 | white: "white", 3 | Subject: "#22C3B5", 4 | SheetItem: "#25C2B7", 5 | maskLayers: "#999999", 6 | subsidiary_text: "#8c8c8c", 7 | subsidiary_white: "#f9f9f9", 8 | subsidiary_black: "#1F1F1F", 9 | border: "#f5f5f5", 10 | indexColor: '#F6C403', 11 | facilityItemColor: '#979797', 12 | funcBgColor: '#fdfdfd', 13 | inactiveTintColor: '#616161', 14 | activeTintColor: '#22C3B5' 15 | } 16 | 17 | export default colors 18 | -------------------------------------------------------------------------------- /App/Themes/Fonts.js: -------------------------------------------------------------------------------- 1 | 2 | import Px from './Px' 3 | 4 | const size = { 5 | s:Px(27), 6 | m:Px(34) 7 | } 8 | 9 | 10 | 11 | export default { 12 | size, 13 | } 14 | -------------------------------------------------------------------------------- /App/Themes/Height.js: -------------------------------------------------------------------------------- 1 | import { PixelRatio } from 'react-native'; 2 | const pixelSize = (function () { 3 | let pixelRatio = PixelRatio.get(); 4 | if (pixelRatio >= 3) return 0.333; 5 | else if (pixelRatio >= 2) return 0.5; 6 | else return 1; 7 | })(); 8 | 9 | const height = { 10 | pixelSize 11 | } 12 | export default height 13 | -------------------------------------------------------------------------------- /App/Themes/Px.js: -------------------------------------------------------------------------------- 1 | 2 | import { Dimensions } from 'react-native' 3 | const UIWIDTH = 750 4 | const { width } = Dimensions.get('window'); 5 | 6 | export default (UIPX) => { 7 | return Math.round(UIPX * width / UIWIDTH); 8 | } -------------------------------------------------------------------------------- /App/Themes/Styles.js: -------------------------------------------------------------------------------- 1 | import {StyleSheet} from 'react-native' 2 | import Px from './Px' 3 | const styles = StyleSheet.create({ 4 | closeStyle: { 5 | width: Px(38), 6 | height: Px(38) 7 | } 8 | }) 9 | export default styles -------------------------------------------------------------------------------- /App/Themes/index.js: -------------------------------------------------------------------------------- 1 | import Colors from './Colors' 2 | import Fonts from './Fonts' 3 | import Height from './Height' 4 | import Px from './Px' 5 | import Styles from './Styles' 6 | export { Colors, Fonts, Height, Px, Styles } 7 | -------------------------------------------------------------------------------- /__tests__/App-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import 'react-native'; 6 | import React from 'react'; 7 | import App from '../App'; 8 | 9 | // Note: test renderer must be required after react-native. 10 | import renderer from 'react-test-renderer'; 11 | 12 | it('renders correctly', () => { 13 | renderer.create(); 14 | }); 15 | -------------------------------------------------------------------------------- /android/app/BUCK: -------------------------------------------------------------------------------- 1 | # To learn about Buck see [Docs](https://buckbuild.com/). 2 | # To run your application with Buck: 3 | # - install Buck 4 | # - `npm start` - to start the packager 5 | # - `cd android` 6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` 7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck 8 | # - `buck install -r android/app` - compile, install and run application 9 | # 10 | 11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") 12 | 13 | lib_deps = [] 14 | 15 | create_aar_targets(glob(["libs/*.aar"])) 16 | 17 | create_jar_targets(glob(["libs/*.jar"])) 18 | 19 | android_library( 20 | name = "all-libs", 21 | exported_deps = lib_deps, 22 | ) 23 | 24 | android_library( 25 | name = "app-code", 26 | srcs = glob([ 27 | "src/main/java/**/*.java", 28 | ]), 29 | deps = [ 30 | ":all-libs", 31 | ":build_config", 32 | ":res", 33 | ], 34 | ) 35 | 36 | android_build_config( 37 | name = "build_config", 38 | package = "com.listdemo", 39 | ) 40 | 41 | android_resource( 42 | name = "res", 43 | package = "com.listdemo", 44 | res = "src/main/res", 45 | ) 46 | 47 | android_binary( 48 | name = "app", 49 | keystore = "//android/keystores:debug", 50 | manifest = "src/main/AndroidManifest.xml", 51 | package_type = "debug", 52 | deps = [ 53 | ":app-code", 54 | ], 55 | ) 56 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | 3 | import com.android.build.OutputFile 4 | 5 | /** 6 | * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets 7 | * and bundleReleaseJsAndAssets). 8 | * These basically call `react-native bundle` with the correct arguments during the Android build 9 | * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the 10 | * bundle directly from the development server. Below you can see all the possible configurations 11 | * and their defaults. If you decide to add a configuration block, make sure to add it before the 12 | * `apply from: "../../node_modules/react-native/react.gradle"` line. 13 | * 14 | * project.ext.react = [ 15 | * // the name of the generated asset file containing your JS bundle 16 | * bundleAssetName: "index.android.bundle", 17 | * 18 | * // the entry file for bundle generation 19 | * entryFile: "index.android.js", 20 | * 21 | * // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format 22 | * bundleCommand: "ram-bundle", 23 | * 24 | * // whether to bundle JS and assets in debug mode 25 | * bundleInDebug: false, 26 | * 27 | * // whether to bundle JS and assets in release mode 28 | * bundleInRelease: true, 29 | * 30 | * // whether to bundle JS and assets in another build variant (if configured). 31 | * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 32 | * // The configuration property can be in the following formats 33 | * // 'bundleIn${productFlavor}${buildType}' 34 | * // 'bundleIn${buildType}' 35 | * // bundleInFreeDebug: true, 36 | * // bundleInPaidRelease: true, 37 | * // bundleInBeta: true, 38 | * 39 | * // whether to disable dev mode in custom build variants (by default only disabled in release) 40 | * // for example: to disable dev mode in the staging build type (if configured) 41 | * devDisabledInStaging: true, 42 | * // The configuration property can be in the following formats 43 | * // 'devDisabledIn${productFlavor}${buildType}' 44 | * // 'devDisabledIn${buildType}' 45 | * 46 | * // the root of your project, i.e. where "package.json" lives 47 | * root: "../../", 48 | * 49 | * // where to put the JS bundle asset in debug mode 50 | * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", 51 | * 52 | * // where to put the JS bundle asset in release mode 53 | * jsBundleDirRelease: "$buildDir/intermediates/assets/release", 54 | * 55 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 56 | * // require('./image.png')), in debug mode 57 | * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", 58 | * 59 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 60 | * // require('./image.png')), in release mode 61 | * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", 62 | * 63 | * // by default the gradle tasks are skipped if none of the JS files or assets change; this means 64 | * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to 65 | * // date; if you have any other folders that you want to ignore for performance reasons (gradle 66 | * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ 67 | * // for example, you might want to remove it from here. 68 | * inputExcludes: ["android/**", "ios/**"], 69 | * 70 | * // override which node gets called and with what additional arguments 71 | * nodeExecutableAndArgs: ["node"], 72 | * 73 | * // supply additional arguments to the packager 74 | * extraPackagerArgs: [] 75 | * ] 76 | */ 77 | 78 | project.ext.react = [ 79 | entryFile: "index.js", 80 | enableHermes: false, // clean and rebuild if changing 81 | ] 82 | 83 | apply from: "../../node_modules/react-native/react.gradle" 84 | 85 | /** 86 | * Set this to true to create two separate APKs instead of one: 87 | * - An APK that only works on ARM devices 88 | * - An APK that only works on x86 devices 89 | * The advantage is the size of the APK is reduced by about 4MB. 90 | * Upload all the APKs to the Play Store and people will download 91 | * the correct one based on the CPU architecture of their device. 92 | */ 93 | def enableSeparateBuildPerCPUArchitecture = false 94 | 95 | /** 96 | * Run Proguard to shrink the Java bytecode in release builds. 97 | */ 98 | def enableProguardInReleaseBuilds = false 99 | 100 | /** 101 | * The preferred build flavor of JavaScriptCore. 102 | * 103 | * For example, to use the international variant, you can use: 104 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 105 | * 106 | * The international variant includes ICU i18n library and necessary data 107 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 108 | * give correct results when using with locales other than en-US. Note that 109 | * this variant is about 6MiB larger per architecture than default. 110 | */ 111 | def jscFlavor = 'org.webkit:android-jsc:+' 112 | 113 | /** 114 | * Whether to enable the Hermes VM. 115 | * 116 | * This should be set on project.ext.react and mirrored here. If it is not set 117 | * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode 118 | * and the benefits of using Hermes will therefore be sharply reduced. 119 | */ 120 | def enableHermes = project.ext.react.get("enableHermes", false); 121 | 122 | android { 123 | compileSdkVersion rootProject.ext.compileSdkVersion 124 | 125 | compileOptions { 126 | sourceCompatibility JavaVersion.VERSION_1_8 127 | targetCompatibility JavaVersion.VERSION_1_8 128 | } 129 | 130 | defaultConfig { 131 | applicationId "com.listdemo" 132 | minSdkVersion rootProject.ext.minSdkVersion 133 | targetSdkVersion rootProject.ext.targetSdkVersion 134 | versionCode 1 135 | versionName "1.0" 136 | } 137 | splits { 138 | abi { 139 | reset() 140 | enable enableSeparateBuildPerCPUArchitecture 141 | universalApk false // If true, also generate a universal APK 142 | include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" 143 | } 144 | } 145 | signingConfigs { 146 | debug { 147 | storeFile file('debug.keystore') 148 | storePassword 'android' 149 | keyAlias 'androiddebugkey' 150 | keyPassword 'android' 151 | } 152 | } 153 | buildTypes { 154 | debug { 155 | signingConfig signingConfigs.debug 156 | } 157 | release { 158 | // Caution! In production, you need to generate your own keystore file. 159 | // see https://facebook.github.io/react-native/docs/signed-apk-android. 160 | signingConfig signingConfigs.debug 161 | minifyEnabled enableProguardInReleaseBuilds 162 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 163 | } 164 | } 165 | // applicationVariants are e.g. debug, release 166 | applicationVariants.all { variant -> 167 | variant.outputs.each { output -> 168 | // For each separate APK per architecture, set a unique version code as described here: 169 | // https://developer.android.com/studio/build/configure-apk-splits.html 170 | def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] 171 | def abi = output.getFilter(OutputFile.ABI) 172 | if (abi != null) { // null for the universal-debug, universal-release variants 173 | output.versionCodeOverride = 174 | versionCodes.get(abi) * 1048576 + defaultConfig.versionCode 175 | } 176 | 177 | } 178 | } 179 | 180 | packagingOptions { 181 | pickFirst '**/armeabi-v7a/libc++_shared.so' 182 | pickFirst '**/x86/libc++_shared.so' 183 | pickFirst '**/arm64-v8a/libc++_shared.so' 184 | pickFirst '**/x86_64/libc++_shared.so' 185 | pickFirst '**/x86/libjsc.so' 186 | pickFirst '**/armeabi-v7a/libjsc.so' 187 | } 188 | } 189 | 190 | dependencies { 191 | implementation project(':react-native-spring-scrollview') 192 | implementation fileTree(dir: "libs", include: ["*.jar"]) 193 | implementation "com.facebook.react:react-native:+" // From node_modules 194 | 195 | if (enableHermes) { 196 | def hermesPath = "../../node_modules/hermesvm/android/"; 197 | debugImplementation files(hermesPath + "hermes-debug.aar") 198 | releaseImplementation files(hermesPath + "hermes-release.aar") 199 | } else { 200 | implementation jscFlavor 201 | } 202 | } 203 | 204 | // Run this once to be able to run the application with BUCK 205 | // puts all compile dependencies into folder libs for BUCK to use 206 | task copyDownloadableDepsToLibs(type: Copy) { 207 | from configurations.compile 208 | into 'libs' 209 | } 210 | 211 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 212 | -------------------------------------------------------------------------------- /android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/listdemo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.listdemo; 2 | 3 | import com.facebook.react.ReactActivity; 4 | 5 | public class MainActivity extends ReactActivity { 6 | 7 | /** 8 | * Returns the name of the main component registered from JavaScript. 9 | * This is used to schedule rendering of the component. 10 | */ 11 | @Override 12 | protected String getMainComponentName() { 13 | return "listDemo"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/listdemo/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.listdemo; 2 | 3 | import android.app.Application; 4 | import android.util.Log; 5 | 6 | import com.facebook.react.PackageList; 7 | import com.facebook.hermes.reactexecutor.HermesExecutorFactory; 8 | import com.facebook.react.bridge.JavaScriptExecutorFactory; 9 | import com.facebook.react.ReactApplication; 10 | import com.bolan9999.SpringScrollViewPackage; 11 | import com.facebook.react.ReactNativeHost; 12 | import com.facebook.react.ReactPackage; 13 | import com.facebook.soloader.SoLoader; 14 | 15 | import java.util.List; 16 | 17 | public class MainApplication extends Application implements ReactApplication { 18 | 19 | private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 20 | @Override 21 | public boolean getUseDeveloperSupport() { 22 | return BuildConfig.DEBUG; 23 | } 24 | 25 | @Override 26 | protected List getPackages() { 27 | @SuppressWarnings("UnnecessaryLocalVariable") 28 | List packages = new PackageList(this).getPackages(); 29 | // Packages that cannot be autolinked yet can be added manually here, for example: 30 | // packages.add(new MyReactNativePackage()); 31 | return packages; 32 | } 33 | 34 | @Override 35 | protected String getJSMainModuleName() { 36 | return "index"; 37 | } 38 | }; 39 | 40 | @Override 41 | public ReactNativeHost getReactNativeHost() { 42 | return mReactNativeHost; 43 | } 44 | 45 | @Override 46 | public void onCreate() { 47 | super.onCreate(); 48 | SoLoader.init(this, /* native exopackage */ false); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | listDemo 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = "28.0.3" 6 | minSdkVersion = 16 7 | compileSdkVersion = 28 8 | targetSdkVersion = 28 9 | supportLibVersion = "28.0.0" 10 | } 11 | repositories { 12 | google() 13 | jcenter() 14 | } 15 | dependencies { 16 | classpath("com.android.tools.build:gradle:3.4.1") 17 | 18 | // NOTE: Do not place your application dependencies here; they belong 19 | // in the individual module build.gradle files 20 | } 21 | } 22 | 23 | allprojects { 24 | repositories { 25 | mavenLocal() 26 | maven { 27 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 28 | url("$rootDir/../node_modules/react-native/android") 29 | } 30 | maven { 31 | // Android JSC is installed from npm 32 | url("$rootDir/../node_modules/jsc-android/dist") 33 | } 34 | 35 | google() 36 | jcenter() 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useAndroidX=true 21 | android.enableJetifier=true 22 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HuangZhe007/ListDemo/0d08d492e6d9e7c075e72b41f66814c99c0c8688/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | # Determine the Java command to use to start the JVM. 86 | if [ -n "$JAVA_HOME" ] ; then 87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 88 | # IBM's JDK on AIX uses strange locations for the executables 89 | JAVACMD="$JAVA_HOME/jre/sh/java" 90 | else 91 | JAVACMD="$JAVA_HOME/bin/java" 92 | fi 93 | if [ ! -x "$JAVACMD" ] ; then 94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 95 | 96 | Please set the JAVA_HOME variable in your environment to match the 97 | location of your Java installation." 98 | fi 99 | else 100 | JAVACMD="java" 101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 102 | 103 | Please set the JAVA_HOME variable in your environment to match the 104 | location of your Java installation." 105 | fi 106 | 107 | # Increase the maximum file descriptors if we can. 108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 109 | MAX_FD_LIMIT=`ulimit -H -n` 110 | if [ $? -eq 0 ] ; then 111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 112 | MAX_FD="$MAX_FD_LIMIT" 113 | fi 114 | ulimit -n $MAX_FD 115 | if [ $? -ne 0 ] ; then 116 | warn "Could not set maximum file descriptor limit: $MAX_FD" 117 | fi 118 | else 119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 120 | fi 121 | fi 122 | 123 | # For Darwin, add options to specify how the application appears in the dock 124 | if $darwin; then 125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 126 | fi 127 | 128 | # For Cygwin, switch paths to Windows format before running java 129 | if $cygwin ; then 130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 132 | JAVACMD=`cygpath --unix "$JAVACMD"` 133 | 134 | # We build the pattern for arguments to be converted via cygpath 135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 136 | SEP="" 137 | for dir in $ROOTDIRSRAW ; do 138 | ROOTDIRS="$ROOTDIRS$SEP$dir" 139 | SEP="|" 140 | done 141 | OURCYGPATTERN="(^($ROOTDIRS))" 142 | # Add a user-defined pattern to the cygpath arguments 143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 145 | fi 146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 147 | i=0 148 | for arg in "$@" ; do 149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 151 | 152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 154 | else 155 | eval `echo args$i`="\"$arg\"" 156 | fi 157 | i=$((i+1)) 158 | done 159 | case $i in 160 | (0) set -- ;; 161 | (1) set -- "$args0" ;; 162 | (2) set -- "$args0" "$args1" ;; 163 | (3) set -- "$args0" "$args1" "$args2" ;; 164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 170 | esac 171 | fi 172 | 173 | # Escape application args 174 | save () { 175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 176 | echo " " 177 | } 178 | APP_ARGS=$(save "$@") 179 | 180 | # Collect all arguments for the java command, following the shell quoting and substitution rules 181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 182 | 183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 185 | cd "$(dirname "$0")" 186 | fi 187 | 188 | exec "$JAVACMD" "$@" 189 | -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem http://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 34 | 35 | @rem Find java.exe 36 | if defined JAVA_HOME goto findJavaFromJavaHome 37 | 38 | set JAVA_EXE=java.exe 39 | %JAVA_EXE% -version >NUL 2>&1 40 | if "%ERRORLEVEL%" == "0" goto init 41 | 42 | echo. 43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 44 | echo. 45 | echo Please set the JAVA_HOME variable in your environment to match the 46 | echo location of your Java installation. 47 | 48 | goto fail 49 | 50 | :findJavaFromJavaHome 51 | set JAVA_HOME=%JAVA_HOME:"=% 52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 53 | 54 | if exist "%JAVA_EXE%" goto init 55 | 56 | echo. 57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 58 | echo. 59 | echo Please set the JAVA_HOME variable in your environment to match the 60 | echo location of your Java installation. 61 | 62 | goto fail 63 | 64 | :init 65 | @rem Get command-line arguments, handling Windows variants 66 | 67 | if not "%OS%" == "Windows_NT" goto win9xME_args 68 | 69 | :win9xME_args 70 | @rem Slurp the command line arguments. 71 | set CMD_LINE_ARGS= 72 | set _SKIP=2 73 | 74 | :win9xME_args_slurp 75 | if "x%~1" == "x" goto execute 76 | 77 | set CMD_LINE_ARGS=%* 78 | 79 | :execute 80 | @rem Setup the command line 81 | 82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 83 | 84 | @rem Execute Gradle 85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 86 | 87 | :end 88 | @rem End local scope for the variables with windows NT shell 89 | if "%ERRORLEVEL%"=="0" goto mainEnd 90 | 91 | :fail 92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 93 | rem the _cmd.exe /c_ return code! 94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 95 | exit /b 1 96 | 97 | :mainEnd 98 | if "%OS%"=="Windows_NT" endlocal 99 | 100 | :omega 101 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'listDemo' 2 | include ':react-native-spring-scrollview' 3 | project(':react-native-spring-scrollview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-spring-scrollview/android') 4 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 5 | include ':app' 6 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "listDemo", 3 | "displayName": "listDemo" 4 | } -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:metro-react-native-babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import {AppRegistry} from 'react-native'; 6 | import App from './App'; 7 | import {name as appName} from './app.json'; 8 | 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '9.0' 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 3 | 4 | target 'listDemo' do 5 | # Pods for listDemo 6 | pod 'React', :path => '../node_modules/react-native/' 7 | pod 'React-Core', :path => '../node_modules/react-native/React' 8 | pod 'React-DevSupport', :path => '../node_modules/react-native/React' 9 | pod 'React-fishhook', :path => '../node_modules/react-native/Libraries/fishhook' 10 | pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' 11 | pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' 12 | pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' 13 | pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' 14 | pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' 15 | pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' 16 | pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' 17 | pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' 18 | pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' 19 | pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket' 20 | 21 | pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' 22 | pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' 23 | pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' 24 | pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' 25 | pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga' 26 | 27 | pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' 28 | pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' 29 | pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' 30 | 31 | pod 'RNSpringScrollView', :path => '../node_modules/react-native-spring-scrollview' 32 | 33 | target 'listDemoTests' do 34 | inherit! :search_paths 35 | # Pods for testing 36 | end 37 | 38 | use_native_modules! 39 | end 40 | 41 | target 'listDemo-tvOS' do 42 | # Pods for listDemo-tvOS 43 | 44 | target 'listDemo-tvOSTests' do 45 | inherit! :search_paths 46 | # Pods for testing 47 | end 48 | 49 | end 50 | -------------------------------------------------------------------------------- /ios/listDemo-tvOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSAppTransportSecurity 26 | 27 | NSExceptionDomains 28 | 29 | localhost 30 | 31 | NSExceptionAllowsInsecureHTTPLoads 32 | 33 | 34 | 35 | 36 | NSLocationWhenInUseUsageDescription 37 | 38 | UILaunchStoryboardName 39 | LaunchScreen 40 | UIRequiredDeviceCapabilities 41 | 42 | armv7 43 | 44 | UISupportedInterfaceOrientations 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIViewControllerBasedStatusBarAppearance 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /ios/listDemo-tvOSTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/listDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00E356F31AD99517003FC87E /* listDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* listDemoTests.m */; }; 11 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 12 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 15 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 16 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 17 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 18 | 2DCD954D1E0B4F2C00145EB5 /* listDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* listDemoTests.m */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A; 27 | remoteInfo = listDemo; 28 | }; 29 | 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { 30 | isa = PBXContainerItemProxy; 31 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 32 | proxyType = 1; 33 | remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; 34 | remoteInfo = "listDemo-tvOS"; 35 | }; 36 | /* End PBXContainerItemProxy section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 40 | 00E356EE1AD99517003FC87E /* listDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = listDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 42 | 00E356F21AD99517003FC87E /* listDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = listDemoTests.m; sourceTree = ""; }; 43 | 13B07F961A680F5B00A75B9A /* listDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = listDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 44 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = listDemo/AppDelegate.h; sourceTree = ""; }; 45 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = listDemo/AppDelegate.m; sourceTree = ""; }; 46 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 47 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = listDemo/Images.xcassets; sourceTree = ""; }; 48 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = listDemo/Info.plist; sourceTree = ""; }; 49 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = listDemo/main.m; sourceTree = ""; }; 50 | 2D02E47B1E0B4A5D006451C7 /* listDemo-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "listDemo-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 2D02E4901E0B4A5D006451C7 /* listDemo-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "listDemo-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 53 | ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; 54 | /* End PBXFileReference section */ 55 | 56 | /* Begin PBXFrameworksBuildPhase section */ 57 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | ); 62 | runOnlyForDeploymentPostprocessing = 0; 63 | }; 64 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 65 | isa = PBXFrameworksBuildPhase; 66 | buildActionMask = 2147483647; 67 | files = ( 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | ); 76 | runOnlyForDeploymentPostprocessing = 0; 77 | }; 78 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { 79 | isa = PBXFrameworksBuildPhase; 80 | buildActionMask = 2147483647; 81 | files = ( 82 | ); 83 | runOnlyForDeploymentPostprocessing = 0; 84 | }; 85 | /* End PBXFrameworksBuildPhase section */ 86 | 87 | /* Begin PBXGroup section */ 88 | 00E356EF1AD99517003FC87E /* listDemoTests */ = { 89 | isa = PBXGroup; 90 | children = ( 91 | 00E356F21AD99517003FC87E /* listDemoTests.m */, 92 | 00E356F01AD99517003FC87E /* Supporting Files */, 93 | ); 94 | path = listDemoTests; 95 | sourceTree = ""; 96 | }; 97 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 00E356F11AD99517003FC87E /* Info.plist */, 101 | ); 102 | name = "Supporting Files"; 103 | sourceTree = ""; 104 | }; 105 | 13B07FAE1A68108700A75B9A /* listDemo */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 109 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 110 | 13B07FB01A68108700A75B9A /* AppDelegate.m */, 111 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 112 | 13B07FB61A68108700A75B9A /* Info.plist */, 113 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 114 | 13B07FB71A68108700A75B9A /* main.m */, 115 | ); 116 | name = listDemo; 117 | sourceTree = ""; 118 | }; 119 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 123 | ED2971642150620600B7C4FE /* JavaScriptCore.framework */, 124 | ); 125 | name = Frameworks; 126 | sourceTree = ""; 127 | }; 128 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | ); 132 | name = Libraries; 133 | sourceTree = ""; 134 | }; 135 | 83CBB9F61A601CBA00E9B192 = { 136 | isa = PBXGroup; 137 | children = ( 138 | 13B07FAE1A68108700A75B9A /* listDemo */, 139 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 140 | 00E356EF1AD99517003FC87E /* listDemoTests */, 141 | 83CBBA001A601CBA00E9B192 /* Products */, 142 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 143 | ); 144 | indentWidth = 2; 145 | sourceTree = ""; 146 | tabWidth = 2; 147 | usesTabs = 0; 148 | }; 149 | 83CBBA001A601CBA00E9B192 /* Products */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | 13B07F961A680F5B00A75B9A /* listDemo.app */, 153 | 00E356EE1AD99517003FC87E /* listDemoTests.xctest */, 154 | 2D02E47B1E0B4A5D006451C7 /* listDemo-tvOS.app */, 155 | 2D02E4901E0B4A5D006451C7 /* listDemo-tvOSTests.xctest */, 156 | ); 157 | name = Products; 158 | sourceTree = ""; 159 | }; 160 | /* End PBXGroup section */ 161 | 162 | /* Begin PBXNativeTarget section */ 163 | 00E356ED1AD99517003FC87E /* listDemoTests */ = { 164 | isa = PBXNativeTarget; 165 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "listDemoTests" */; 166 | buildPhases = ( 167 | 00E356EA1AD99517003FC87E /* Sources */, 168 | 00E356EB1AD99517003FC87E /* Frameworks */, 169 | 00E356EC1AD99517003FC87E /* Resources */, 170 | ); 171 | buildRules = ( 172 | ); 173 | dependencies = ( 174 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 175 | ); 176 | name = listDemoTests; 177 | productName = listDemoTests; 178 | productReference = 00E356EE1AD99517003FC87E /* listDemoTests.xctest */; 179 | productType = "com.apple.product-type.bundle.unit-test"; 180 | }; 181 | 13B07F861A680F5B00A75B9A /* listDemo */ = { 182 | isa = PBXNativeTarget; 183 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "listDemo" */; 184 | buildPhases = ( 185 | FD10A7F022414F080027D42C /* Start Packager */, 186 | 13B07F871A680F5B00A75B9A /* Sources */, 187 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 188 | 13B07F8E1A680F5B00A75B9A /* Resources */, 189 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 190 | ); 191 | buildRules = ( 192 | ); 193 | dependencies = ( 194 | ); 195 | name = listDemo; 196 | productName = "listDemo"; 197 | productReference = 13B07F961A680F5B00A75B9A /* listDemo.app */; 198 | productType = "com.apple.product-type.application"; 199 | }; 200 | 2D02E47A1E0B4A5D006451C7 /* listDemo-tvOS */ = { 201 | isa = PBXNativeTarget; 202 | buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "listDemo-tvOS" */; 203 | buildPhases = ( 204 | FD10A7F122414F3F0027D42C /* Start Packager */, 205 | 2D02E4771E0B4A5D006451C7 /* Sources */, 206 | 2D02E4781E0B4A5D006451C7 /* Frameworks */, 207 | 2D02E4791E0B4A5D006451C7 /* Resources */, 208 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, 209 | ); 210 | buildRules = ( 211 | ); 212 | dependencies = ( 213 | ); 214 | name = "listDemo-tvOS"; 215 | productName = "listDemo-tvOS"; 216 | productReference = 2D02E47B1E0B4A5D006451C7 /* listDemo-tvOS.app */; 217 | productType = "com.apple.product-type.application"; 218 | }; 219 | 2D02E48F1E0B4A5D006451C7 /* listDemo-tvOSTests */ = { 220 | isa = PBXNativeTarget; 221 | buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "listDemo-tvOSTests" */; 222 | buildPhases = ( 223 | 2D02E48C1E0B4A5D006451C7 /* Sources */, 224 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 225 | 2D02E48E1E0B4A5D006451C7 /* Resources */, 226 | ); 227 | buildRules = ( 228 | ); 229 | dependencies = ( 230 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, 231 | ); 232 | name = "listDemo-tvOSTests"; 233 | productName = "listDemo-tvOSTests"; 234 | productReference = 2D02E4901E0B4A5D006451C7 /* listDemo-tvOSTests.xctest */; 235 | productType = "com.apple.product-type.bundle.unit-test"; 236 | }; 237 | /* End PBXNativeTarget section */ 238 | 239 | /* Begin PBXProject section */ 240 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 241 | isa = PBXProject; 242 | attributes = { 243 | LastUpgradeCheck = 0940; 244 | ORGANIZATIONNAME = Facebook; 245 | TargetAttributes = { 246 | 00E356ED1AD99517003FC87E = { 247 | CreatedOnToolsVersion = 6.2; 248 | TestTargetID = 13B07F861A680F5B00A75B9A; 249 | }; 250 | 2D02E47A1E0B4A5D006451C7 = { 251 | CreatedOnToolsVersion = 8.2.1; 252 | ProvisioningStyle = Automatic; 253 | }; 254 | 2D02E48F1E0B4A5D006451C7 = { 255 | CreatedOnToolsVersion = 8.2.1; 256 | ProvisioningStyle = Automatic; 257 | TestTargetID = 2D02E47A1E0B4A5D006451C7; 258 | }; 259 | }; 260 | }; 261 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "listDemo" */; 262 | compatibilityVersion = "Xcode 3.2"; 263 | developmentRegion = English; 264 | hasScannedForEncodings = 0; 265 | knownRegions = ( 266 | en, 267 | Base, 268 | ); 269 | mainGroup = 83CBB9F61A601CBA00E9B192; 270 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 271 | projectDirPath = ""; 272 | projectRoot = ""; 273 | targets = ( 274 | 13B07F861A680F5B00A75B9A /* listDemo */, 275 | 00E356ED1AD99517003FC87E /* listDemoTests */, 276 | 2D02E47A1E0B4A5D006451C7 /* listDemo-tvOS */, 277 | 2D02E48F1E0B4A5D006451C7 /* listDemo-tvOSTests */, 278 | ); 279 | }; 280 | /* End PBXProject section */ 281 | 282 | /* Begin PBXResourcesBuildPhase section */ 283 | 00E356EC1AD99517003FC87E /* Resources */ = { 284 | isa = PBXResourcesBuildPhase; 285 | buildActionMask = 2147483647; 286 | files = ( 287 | ); 288 | runOnlyForDeploymentPostprocessing = 0; 289 | }; 290 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 291 | isa = PBXResourcesBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 295 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 296 | ); 297 | runOnlyForDeploymentPostprocessing = 0; 298 | }; 299 | 2D02E4791E0B4A5D006451C7 /* Resources */ = { 300 | isa = PBXResourcesBuildPhase; 301 | buildActionMask = 2147483647; 302 | files = ( 303 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | 2D02E48E1E0B4A5D006451C7 /* Resources */ = { 308 | isa = PBXResourcesBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | ); 312 | runOnlyForDeploymentPostprocessing = 0; 313 | }; 314 | /* End PBXResourcesBuildPhase section */ 315 | 316 | /* Begin PBXShellScriptBuildPhase section */ 317 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 318 | isa = PBXShellScriptBuildPhase; 319 | buildActionMask = 2147483647; 320 | files = ( 321 | ); 322 | inputPaths = ( 323 | ); 324 | name = "Bundle React Native code and images"; 325 | outputPaths = ( 326 | ); 327 | runOnlyForDeploymentPostprocessing = 0; 328 | shellPath = /bin/sh; 329 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 330 | }; 331 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { 332 | isa = PBXShellScriptBuildPhase; 333 | buildActionMask = 2147483647; 334 | files = ( 335 | ); 336 | inputPaths = ( 337 | ); 338 | name = "Bundle React Native Code And Images"; 339 | outputPaths = ( 340 | ); 341 | runOnlyForDeploymentPostprocessing = 0; 342 | shellPath = /bin/sh; 343 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 344 | }; 345 | FD10A7F022414F080027D42C /* Start Packager */ = { 346 | isa = PBXShellScriptBuildPhase; 347 | buildActionMask = 2147483647; 348 | files = ( 349 | ); 350 | inputFileListPaths = ( 351 | ); 352 | inputPaths = ( 353 | ); 354 | name = "Start Packager"; 355 | outputFileListPaths = ( 356 | ); 357 | outputPaths = ( 358 | ); 359 | runOnlyForDeploymentPostprocessing = 0; 360 | shellPath = /bin/sh; 361 | shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; 362 | showEnvVarsInLog = 0; 363 | }; 364 | FD10A7F122414F3F0027D42C /* Start Packager */ = { 365 | isa = PBXShellScriptBuildPhase; 366 | buildActionMask = 2147483647; 367 | files = ( 368 | ); 369 | inputFileListPaths = ( 370 | ); 371 | inputPaths = ( 372 | ); 373 | name = "Start Packager"; 374 | outputFileListPaths = ( 375 | ); 376 | outputPaths = ( 377 | ); 378 | runOnlyForDeploymentPostprocessing = 0; 379 | shellPath = /bin/sh; 380 | shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; 381 | showEnvVarsInLog = 0; 382 | }; 383 | /* End PBXShellScriptBuildPhase section */ 384 | 385 | /* Begin PBXSourcesBuildPhase section */ 386 | 00E356EA1AD99517003FC87E /* Sources */ = { 387 | isa = PBXSourcesBuildPhase; 388 | buildActionMask = 2147483647; 389 | files = ( 390 | 00E356F31AD99517003FC87E /* listDemoTests.m in Sources */, 391 | ); 392 | runOnlyForDeploymentPostprocessing = 0; 393 | }; 394 | 13B07F871A680F5B00A75B9A /* Sources */ = { 395 | isa = PBXSourcesBuildPhase; 396 | buildActionMask = 2147483647; 397 | files = ( 398 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, 399 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 400 | ); 401 | runOnlyForDeploymentPostprocessing = 0; 402 | }; 403 | 2D02E4771E0B4A5D006451C7 /* Sources */ = { 404 | isa = PBXSourcesBuildPhase; 405 | buildActionMask = 2147483647; 406 | files = ( 407 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, 408 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, 409 | ); 410 | runOnlyForDeploymentPostprocessing = 0; 411 | }; 412 | 2D02E48C1E0B4A5D006451C7 /* Sources */ = { 413 | isa = PBXSourcesBuildPhase; 414 | buildActionMask = 2147483647; 415 | files = ( 416 | 2DCD954D1E0B4F2C00145EB5 /* listDemoTests.m in Sources */, 417 | ); 418 | runOnlyForDeploymentPostprocessing = 0; 419 | }; 420 | /* End PBXSourcesBuildPhase section */ 421 | 422 | /* Begin PBXTargetDependency section */ 423 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 424 | isa = PBXTargetDependency; 425 | target = 13B07F861A680F5B00A75B9A /* listDemo */; 426 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 427 | }; 428 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { 429 | isa = PBXTargetDependency; 430 | target = 2D02E47A1E0B4A5D006451C7 /* listDemo-tvOS */; 431 | targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; 432 | }; 433 | /* End PBXTargetDependency section */ 434 | 435 | /* Begin PBXVariantGroup section */ 436 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { 437 | isa = PBXVariantGroup; 438 | children = ( 439 | 13B07FB21A68108700A75B9A /* Base */, 440 | ); 441 | name = LaunchScreen.xib; 442 | path = listDemo; 443 | sourceTree = ""; 444 | }; 445 | /* End PBXVariantGroup section */ 446 | 447 | /* Begin XCBuildConfiguration section */ 448 | 00E356F61AD99517003FC87E /* Debug */ = { 449 | isa = XCBuildConfiguration; 450 | buildSettings = { 451 | BUNDLE_LOADER = "$(TEST_HOST)"; 452 | GCC_PREPROCESSOR_DEFINITIONS = ( 453 | "DEBUG=1", 454 | "$(inherited)", 455 | ); 456 | INFOPLIST_FILE = listDemoTests/Info.plist; 457 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 458 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 459 | OTHER_LDFLAGS = ( 460 | "-ObjC", 461 | "-lc++", 462 | "$(inherited)", 463 | ); 464 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 465 | PRODUCT_NAME = "$(TARGET_NAME)"; 466 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/listDemo.app/listDemo"; 467 | }; 468 | name = Debug; 469 | }; 470 | 00E356F71AD99517003FC87E /* Release */ = { 471 | isa = XCBuildConfiguration; 472 | buildSettings = { 473 | BUNDLE_LOADER = "$(TEST_HOST)"; 474 | COPY_PHASE_STRIP = NO; 475 | INFOPLIST_FILE = listDemoTests/Info.plist; 476 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 477 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 478 | OTHER_LDFLAGS = ( 479 | "-ObjC", 480 | "-lc++", 481 | "$(inherited)", 482 | ); 483 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 484 | PRODUCT_NAME = "$(TARGET_NAME)"; 485 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/listDemo.app/listDemo"; 486 | }; 487 | name = Release; 488 | }; 489 | 13B07F941A680F5B00A75B9A /* Debug */ = { 490 | isa = XCBuildConfiguration; 491 | buildSettings = { 492 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 493 | CURRENT_PROJECT_VERSION = 1; 494 | DEAD_CODE_STRIPPING = NO; 495 | INFOPLIST_FILE = listDemo/Info.plist; 496 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 497 | OTHER_LDFLAGS = ( 498 | "$(inherited)", 499 | "-ObjC", 500 | "-lc++", 501 | ); 502 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 503 | PRODUCT_NAME = listDemo; 504 | VERSIONING_SYSTEM = "apple-generic"; 505 | }; 506 | name = Debug; 507 | }; 508 | 13B07F951A680F5B00A75B9A /* Release */ = { 509 | isa = XCBuildConfiguration; 510 | buildSettings = { 511 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 512 | CURRENT_PROJECT_VERSION = 1; 513 | INFOPLIST_FILE = listDemo/Info.plist; 514 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 515 | OTHER_LDFLAGS = ( 516 | "$(inherited)", 517 | "-ObjC", 518 | "-lc++", 519 | ); 520 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 521 | PRODUCT_NAME = listDemo; 522 | VERSIONING_SYSTEM = "apple-generic"; 523 | }; 524 | name = Release; 525 | }; 526 | 2D02E4971E0B4A5E006451C7 /* Debug */ = { 527 | isa = XCBuildConfiguration; 528 | buildSettings = { 529 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 530 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 531 | CLANG_ANALYZER_NONNULL = YES; 532 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 533 | CLANG_WARN_INFINITE_RECURSION = YES; 534 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 535 | DEBUG_INFORMATION_FORMAT = dwarf; 536 | ENABLE_TESTABILITY = YES; 537 | GCC_NO_COMMON_BLOCKS = YES; 538 | INFOPLIST_FILE = "listDemo-tvOS/Info.plist"; 539 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 540 | OTHER_LDFLAGS = ( 541 | "$(inherited)", 542 | "-ObjC", 543 | "-lc++", 544 | ); 545 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.listDemo-tvOS"; 546 | PRODUCT_NAME = "$(TARGET_NAME)"; 547 | SDKROOT = appletvos; 548 | TARGETED_DEVICE_FAMILY = 3; 549 | TVOS_DEPLOYMENT_TARGET = 9.2; 550 | }; 551 | name = Debug; 552 | }; 553 | 2D02E4981E0B4A5E006451C7 /* Release */ = { 554 | isa = XCBuildConfiguration; 555 | buildSettings = { 556 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 557 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 558 | CLANG_ANALYZER_NONNULL = YES; 559 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 560 | CLANG_WARN_INFINITE_RECURSION = YES; 561 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 562 | COPY_PHASE_STRIP = NO; 563 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 564 | GCC_NO_COMMON_BLOCKS = YES; 565 | INFOPLIST_FILE = "listDemo-tvOS/Info.plist"; 566 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 567 | OTHER_LDFLAGS = ( 568 | "$(inherited)", 569 | "-ObjC", 570 | "-lc++", 571 | ); 572 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.listDemo-tvOS"; 573 | PRODUCT_NAME = "$(TARGET_NAME)"; 574 | SDKROOT = appletvos; 575 | TARGETED_DEVICE_FAMILY = 3; 576 | TVOS_DEPLOYMENT_TARGET = 9.2; 577 | }; 578 | name = Release; 579 | }; 580 | 2D02E4991E0B4A5E006451C7 /* Debug */ = { 581 | isa = XCBuildConfiguration; 582 | buildSettings = { 583 | BUNDLE_LOADER = "$(TEST_HOST)"; 584 | CLANG_ANALYZER_NONNULL = YES; 585 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 586 | CLANG_WARN_INFINITE_RECURSION = YES; 587 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 588 | DEBUG_INFORMATION_FORMAT = dwarf; 589 | ENABLE_TESTABILITY = YES; 590 | GCC_NO_COMMON_BLOCKS = YES; 591 | INFOPLIST_FILE = "listDemo-tvOSTests/Info.plist"; 592 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 593 | OTHER_LDFLAGS = ( 594 | "$(inherited)", 595 | "-ObjC", 596 | "-lc++", 597 | ); 598 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.listDemo-tvOSTests"; 599 | PRODUCT_NAME = "$(TARGET_NAME)"; 600 | SDKROOT = appletvos; 601 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/listDemo-tvOS.app/listDemo-tvOS"; 602 | TVOS_DEPLOYMENT_TARGET = 10.1; 603 | }; 604 | name = Debug; 605 | }; 606 | 2D02E49A1E0B4A5E006451C7 /* Release */ = { 607 | isa = XCBuildConfiguration; 608 | buildSettings = { 609 | BUNDLE_LOADER = "$(TEST_HOST)"; 610 | CLANG_ANALYZER_NONNULL = YES; 611 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 612 | CLANG_WARN_INFINITE_RECURSION = YES; 613 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 614 | COPY_PHASE_STRIP = NO; 615 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 616 | GCC_NO_COMMON_BLOCKS = YES; 617 | INFOPLIST_FILE = "listDemo-tvOSTests/Info.plist"; 618 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 619 | OTHER_LDFLAGS = ( 620 | "$(inherited)", 621 | "-ObjC", 622 | "-lc++", 623 | ); 624 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.listDemo-tvOSTests"; 625 | PRODUCT_NAME = "$(TARGET_NAME)"; 626 | SDKROOT = appletvos; 627 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/listDemo-tvOS.app/listDemo-tvOS"; 628 | TVOS_DEPLOYMENT_TARGET = 10.1; 629 | }; 630 | name = Release; 631 | }; 632 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 633 | isa = XCBuildConfiguration; 634 | buildSettings = { 635 | ALWAYS_SEARCH_USER_PATHS = NO; 636 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 637 | CLANG_CXX_LIBRARY = "libc++"; 638 | CLANG_ENABLE_MODULES = YES; 639 | CLANG_ENABLE_OBJC_ARC = YES; 640 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 641 | CLANG_WARN_BOOL_CONVERSION = YES; 642 | CLANG_WARN_COMMA = YES; 643 | CLANG_WARN_CONSTANT_CONVERSION = YES; 644 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 645 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 646 | CLANG_WARN_EMPTY_BODY = YES; 647 | CLANG_WARN_ENUM_CONVERSION = YES; 648 | CLANG_WARN_INFINITE_RECURSION = YES; 649 | CLANG_WARN_INT_CONVERSION = YES; 650 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 651 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 652 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 653 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 654 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 655 | CLANG_WARN_STRICT_PROTOTYPES = YES; 656 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 657 | CLANG_WARN_UNREACHABLE_CODE = YES; 658 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 659 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 660 | COPY_PHASE_STRIP = NO; 661 | ENABLE_STRICT_OBJC_MSGSEND = YES; 662 | ENABLE_TESTABILITY = YES; 663 | GCC_C_LANGUAGE_STANDARD = gnu99; 664 | GCC_DYNAMIC_NO_PIC = NO; 665 | GCC_NO_COMMON_BLOCKS = YES; 666 | GCC_OPTIMIZATION_LEVEL = 0; 667 | GCC_PREPROCESSOR_DEFINITIONS = ( 668 | "DEBUG=1", 669 | "$(inherited)", 670 | ); 671 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 672 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 673 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 674 | GCC_WARN_UNDECLARED_SELECTOR = YES; 675 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 676 | GCC_WARN_UNUSED_FUNCTION = YES; 677 | GCC_WARN_UNUSED_VARIABLE = YES; 678 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 679 | MTL_ENABLE_DEBUG_INFO = YES; 680 | ONLY_ACTIVE_ARCH = YES; 681 | SDKROOT = iphoneos; 682 | }; 683 | name = Debug; 684 | }; 685 | 83CBBA211A601CBA00E9B192 /* Release */ = { 686 | isa = XCBuildConfiguration; 687 | buildSettings = { 688 | ALWAYS_SEARCH_USER_PATHS = NO; 689 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 690 | CLANG_CXX_LIBRARY = "libc++"; 691 | CLANG_ENABLE_MODULES = YES; 692 | CLANG_ENABLE_OBJC_ARC = YES; 693 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 694 | CLANG_WARN_BOOL_CONVERSION = YES; 695 | CLANG_WARN_COMMA = YES; 696 | CLANG_WARN_CONSTANT_CONVERSION = YES; 697 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 698 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 699 | CLANG_WARN_EMPTY_BODY = YES; 700 | CLANG_WARN_ENUM_CONVERSION = YES; 701 | CLANG_WARN_INFINITE_RECURSION = YES; 702 | CLANG_WARN_INT_CONVERSION = YES; 703 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 704 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 705 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 706 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 707 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 708 | CLANG_WARN_STRICT_PROTOTYPES = YES; 709 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 710 | CLANG_WARN_UNREACHABLE_CODE = YES; 711 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 712 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 713 | COPY_PHASE_STRIP = YES; 714 | ENABLE_NS_ASSERTIONS = NO; 715 | ENABLE_STRICT_OBJC_MSGSEND = YES; 716 | GCC_C_LANGUAGE_STANDARD = gnu99; 717 | GCC_NO_COMMON_BLOCKS = YES; 718 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 719 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 720 | GCC_WARN_UNDECLARED_SELECTOR = YES; 721 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 722 | GCC_WARN_UNUSED_FUNCTION = YES; 723 | GCC_WARN_UNUSED_VARIABLE = YES; 724 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 725 | MTL_ENABLE_DEBUG_INFO = NO; 726 | SDKROOT = iphoneos; 727 | VALIDATE_PRODUCT = YES; 728 | }; 729 | name = Release; 730 | }; 731 | /* End XCBuildConfiguration section */ 732 | 733 | /* Begin XCConfigurationList section */ 734 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "listDemoTests" */ = { 735 | isa = XCConfigurationList; 736 | buildConfigurations = ( 737 | 00E356F61AD99517003FC87E /* Debug */, 738 | 00E356F71AD99517003FC87E /* Release */, 739 | ); 740 | defaultConfigurationIsVisible = 0; 741 | defaultConfigurationName = Release; 742 | }; 743 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "listDemo" */ = { 744 | isa = XCConfigurationList; 745 | buildConfigurations = ( 746 | 13B07F941A680F5B00A75B9A /* Debug */, 747 | 13B07F951A680F5B00A75B9A /* Release */, 748 | ); 749 | defaultConfigurationIsVisible = 0; 750 | defaultConfigurationName = Release; 751 | }; 752 | 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "listDemo-tvOS" */ = { 753 | isa = XCConfigurationList; 754 | buildConfigurations = ( 755 | 2D02E4971E0B4A5E006451C7 /* Debug */, 756 | 2D02E4981E0B4A5E006451C7 /* Release */, 757 | ); 758 | defaultConfigurationIsVisible = 0; 759 | defaultConfigurationName = Release; 760 | }; 761 | 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "listDemo-tvOSTests" */ = { 762 | isa = XCConfigurationList; 763 | buildConfigurations = ( 764 | 2D02E4991E0B4A5E006451C7 /* Debug */, 765 | 2D02E49A1E0B4A5E006451C7 /* Release */, 766 | ); 767 | defaultConfigurationIsVisible = 0; 768 | defaultConfigurationName = Release; 769 | }; 770 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "listDemo" */ = { 771 | isa = XCConfigurationList; 772 | buildConfigurations = ( 773 | 83CBBA201A601CBA00E9B192 /* Debug */, 774 | 83CBBA211A601CBA00E9B192 /* Release */, 775 | ); 776 | defaultConfigurationIsVisible = 0; 777 | defaultConfigurationName = Release; 778 | }; 779 | /* End XCConfigurationList section */ 780 | }; 781 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 782 | } 783 | -------------------------------------------------------------------------------- /ios/listDemo.xcodeproj/xcshareddata/xcschemes/listDemo-tvOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 61 | 67 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 92 | 94 | 100 | 101 | 102 | 103 | 104 | 105 | 111 | 113 | 119 | 120 | 121 | 122 | 124 | 125 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /ios/listDemo.xcodeproj/xcshareddata/xcschemes/listDemo.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 61 | 67 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 92 | 94 | 100 | 101 | 102 | 103 | 104 | 105 | 111 | 113 | 119 | 120 | 121 | 122 | 124 | 125 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /ios/listDemo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (nonatomic, strong) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ios/listDemo/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "AppDelegate.h" 9 | 10 | #import 11 | #import 12 | #import 13 | 14 | @implementation AppDelegate 15 | 16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 17 | { 18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; 19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge 20 | moduleName:@"listDemo" 21 | initialProperties:nil]; 22 | 23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; 24 | 25 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 26 | UIViewController *rootViewController = [UIViewController new]; 27 | rootViewController.view = rootView; 28 | self.window.rootViewController = rootViewController; 29 | [self.window makeKeyAndVisible]; 30 | return YES; 31 | } 32 | 33 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 34 | { 35 | #if DEBUG 36 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; 37 | #else 38 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 39 | #endif 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /ios/listDemo/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /ios/listDemo/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /ios/listDemo/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/listDemo/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | listDemo 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | NSExceptionDomains 32 | 33 | localhost 34 | 35 | NSExceptionAllowsInsecureHTTPLoads 36 | 37 | 38 | 39 | 40 | NSLocationWhenInUseUsageDescription 41 | 42 | UILaunchStoryboardName 43 | LaunchScreen 44 | UIRequiredDeviceCapabilities 45 | 46 | armv7 47 | 48 | UISupportedInterfaceOrientations 49 | 50 | UIInterfaceOrientationPortrait 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | UIViewControllerBasedStatusBarAppearance 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /ios/listDemo/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ios/listDemoTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /ios/listDemoTests/listDemoTests.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | #import 10 | 11 | #import 12 | #import 13 | 14 | #define TIMEOUT_SECONDS 600 15 | #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" 16 | 17 | @interface listDemoTests : XCTestCase 18 | 19 | @end 20 | 21 | @implementation listDemoTests 22 | 23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 24 | { 25 | if (test(view)) { 26 | return YES; 27 | } 28 | for (UIView *subview in [view subviews]) { 29 | if ([self findSubviewInView:subview matching:test]) { 30 | return YES; 31 | } 32 | } 33 | return NO; 34 | } 35 | 36 | - (void)testRendersWelcomeScreen 37 | { 38 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 39 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 40 | BOOL foundElement = NO; 41 | 42 | __block NSString *redboxError = nil; 43 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 44 | if (level >= RCTLogLevelError) { 45 | redboxError = message; 46 | } 47 | }); 48 | 49 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 50 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 51 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 52 | 53 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 54 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 55 | return YES; 56 | } 57 | return NO; 58 | }]; 59 | } 60 | 61 | RCTSetLogFunction(RCTDefaultLogFunction); 62 | 63 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 64 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 65 | } 66 | 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Metro configuration for React Native 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | */ 7 | 8 | module.exports = { 9 | transformer: { 10 | getTransformOptions: async () => ({ 11 | transform: { 12 | experimentalImportSupport: false, 13 | inlineRequires: false, 14 | }, 15 | }), 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "listDemo", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "react-native start", 7 | "test": "jest", 8 | "lint": "eslint ." 9 | }, 10 | "dependencies": { 11 | "react": "16.8.6", 12 | "react-native": "0.60.4", 13 | "react-native-largelist-v3": "^3.0.14", 14 | "react-native-spinkit": "^1.4.1", 15 | "react-native-spring-scrollview": "^2.0.22" 16 | }, 17 | "devDependencies": { 18 | "@babel/core": "^7.5.5", 19 | "@babel/runtime": "^7.5.5", 20 | "@react-native-community/eslint-config": "^0.0.5", 21 | "babel-jest": "^24.8.0", 22 | "eslint": "^6.1.0", 23 | "jest": "^24.8.0", 24 | "metro-react-native-babel-preset": "^0.56.0", 25 | "react-test-renderer": "16.8.6" 26 | }, 27 | "jest": { 28 | "preset": "react-native" 29 | } 30 | } 31 | --------------------------------------------------------------------------------