zoukankan      html  css  js  c++  java
  • Android之自定义控件-城市选择

    实现效果:

       

     

    图片素材:          

    --> 首先, 城市数据字节放在 Json 文件, 就不网络获取了.

      city.json 存放 Json 数据:

       1 {
       2     "result": "0",
       3     "message": "接口通信成功!",
       4     "responseData": {
       5         "History": [],
       6         "Recent": [],
       7         "Hot": [
       8             {
       9                 "id": "226",
      10                 "cityName": "上海"
      11             },
      12             {
      13                 "id": "447",
      14                 "cityName": "北京"
      15             },
      16             {
      17                 "id": "221",
      18                 "cityName": "南京"
      19             },
      20             {
      21                 "id": "220",
      22                 "cityName": "苏州"
      23             },
      24             {
      25                 "id": "261",
      26                 "cityName": "杭州"
      27             },
      28             {
      29                 "id": "476",
      30                 "cityName": "天津"
      31             }
      32         ],
      33         "Common": [
      34             {
      35                 "title": "A",
      36                 "items": [
      37                     {
      38                         "id": 664,
      39                         "cityName": "安庆"
      40                     },
      41                     {
      42                         "id": 3590,
      43                         "cityName": "安吉县"
      44                     }
      45                 ]
      46             },
      47             {
      48                 "title": "B",
      49                 "items": [
      50                     {
      51                         "id": 3612,
      52                         "cityName": "巴州"
      53                     },
      54                     {
      55                         "id": 3366,
      56                         "cityName": "白银"
      57                     },
      58                     {
      59                         "id": 910,
      60                         "cityName": "蚌埠"
      61                     },
      62                     {
      63                         "id": 2818,
      64                         "cityName": "保定"
      65                     },
      66                     {
      67                         "id": 1068,
      68                         "cityName": "北海"
      69                     },
      70                     {
      71                         "id": 447,
      72                         "cityName": "北京"
      73                     },
      74                     {
      75                         "id": 882,
      76                         "cityName": "滨州"
      77                     },
      78                     {
      79                         "id": 2119,
      80                         "cityName": "亳州"
      81                     },
      82                     {
      83                         "id": 3449,
      84                         "cityName": "博尔塔拉蒙古自治州"
      85                     },
      86                     {
      87                         "id": 2202,
      88                         "cityName": "滨海县"
      89                     },
      90                     {
      91                         "id": 2462,
      92                         "cityName": "滨海新区大港"
      93                     },
      94                     {
      95                         "id": 2463,
      96                         "cityName": "滨海新区塘沽"
      97                     },
      98                     {
      99                         "id": 2464,
     100                         "cityName": "滨海新区汉沽"
     101                     },
     102                     {
     103                         "id": 2788,
     104                         "cityName": "宝应县"
     105                     },
     106                     {
     107                         "id": 3452,
     108                         "cityName": "博乐"
     109                     },
     110                     {
     111                         "id": 3487,
     112                         "cityName": "霸州"
     113                     }
     114                 ]
     115             },
     116             {
     117                 "title": "C",
     118                 "items": [
     119                     {
     120                         "id": 1889,
     121                         "cityName": "沧州"
     122                     },
     123                     {
     124                         "id": 2611,
     125                         "cityName": "昌吉自治州"
     126                     },
     127                     {
     128                         "id": 2329,
     129                         "cityName": "长春"
     130                     },
     131                     {
     132                         "id": 651,
     133                         "cityName": "长沙"
     134                     },
     135                     {
     136                         "id": 2926,
     137                         "cityName": "长治"
     138                     },
     139                     {
     140                         "id": 237,
     141                         "cityName": "常州"
     142                     },
     143                     {
     144                         "id": 1959,
     145                         "cityName": "朝阳"
     146                     },
     147                     {
     148                         "id": 3339,
     149                         "cityName": "潮州"
     150                     },
     151                     {
     152                         "id": 279,
     153                         "cityName": "成都"
     154                     },
     155                     {
     156                         "id": 3527,
     157                         "cityName": "承德"
     158                     },
     159                     {
     160                         "id": 2095,
     161                         "cityName": "池州"
     162                     },
     163                     {
     164                         "id": 2303,
     165                         "cityName": "赤峰"
     166                     },
     167                     {
     168                         "id": 901,
     169                         "cityName": "滁州"
     170                     },
     171                     {
     172                         "id": 621,
     173                         "cityName": "重庆"
     174                     },
     175                     {
     176                         "id": 920,
     177                         "cityName": "崇明县"
     178                     },
     179                     {
     180                         "id": 2275,
     181                         "cityName": "曹县"
     182                     },
     183                     {
     184                         "id": 2620,
     185                         "cityName": "慈溪"
     186                     },
     187                     {
     188                         "id": 2709,
     189                         "cityName": "常熟"
     190                     },
     191                     {
     192                         "id": 2779,
     193                         "cityName": "茌平县"
     194                     },
     195                     {
     196                         "id": 3066,
     197                         "cityName": "巢湖"
     198                     },
     199                     {
     200                         "id": 3135,
     201                         "cityName": "长丰县"
     202                     },
     203                     {
     204                         "id": 3630,
     205                         "cityName": "昌黎县"
     206                     },
     207                     {
     208                         "id": 3640,
     209                         "cityName": "章丘"
     210                     },
     211                     {
     212                         "id": 3657,
     213                         "cityName": "崇州"
     214                     }
     215                 ]
     216             },
     217             {
     218                 "title": "D",
     219                 "items": [
     220                     {
     221                         "id": 3384,
     222                         "cityName": "达卡(孟加拉国)"
     223                     },
     224                     {
     225                         "id": 1699,
     226                         "cityName": "大连"
     227                     },
     228                     {
     229                         "id": 2700,
     230                         "cityName": "大庆"
     231                     },
     232                     {
     233                         "id": 2290,
     234                         "cityName": "大同"
     235                     },
     236                     {
     237                         "id": 579,
     238                         "cityName": "德州"
     239                     },
     240                     {
     241                         "id": 3351,
     242                         "cityName": "定州"
     243                     },
     244                     {
     245                         "id": 254,
     246                         "cityName": "东莞"
     247                     },
     248                     {
     249                         "id": 1748,
     250                         "cityName": "东营"
     251                     },
     252                     {
     253                         "id": 2208,
     254                         "cityName": "德清县"
     255                     },
     256                     {
     257                         "id": 2286,
     258                         "cityName": "东海县"
     259                     },
     260                     {
     261                         "id": 2608,
     262                         "cityName": "定远县"
     263                     },
     264                     {
     265                         "id": 2715,
     266                         "cityName": "东台"
     267                     },
     268                     {
     269                         "id": 3101,
     270                         "cityName": "砀山县"
     271                     },
     272                     {
     273                         "id": 3150,
     274                         "cityName": "大厂县"
     275                     },
     276                     {
     277                         "id": 3166,
     278                         "cityName": "东乡县"
     279                     },
     280                     {
     281                         "id": 3281,
     282                         "cityName": "丹阳"
     283                     },
     284                     {
     285                         "id": 3406,
     286                         "cityName": "东明县"
     287                     },
     288                     {
     289                         "id": 3618,
     290                         "cityName": "大悟县"
     291                     },
     292                     {
     293                         "id": 3643,
     294                         "cityName": "敦煌"
     295                     },
     296                     {
     297                         "id": 3661,
     298                         "cityName": "大名县"
     299                     }
     300                 ]
     301             },
     302             {
     303                 "title": "F",
     304                 "items": [
     305                     {
     306                         "id": 2176,
     307                         "cityName": "佛山"
     308                     },
     309                     {
     310                         "id": 801,
     311                         "cityName": "福州"
     312                     },
     313                     {
     314                         "id": 3165,
     315                         "cityName": "抚州"
     316                     },
     317                     {
     318                         "id": 2881,
     319                         "cityName": "阜阳"
     320                     },
     321                     {
     322                         "id": 2262,
     323                         "cityName": "富锦"
     324                     },
     325                     {
     326                         "id": 2399,
     327                         "cityName": "凤阳县"
     328                     },
     329                     {
     330                         "id": 3157,
     331                         "cityName": "繁峙县"
     332                     },
     333                     {
     334                         "id": 3162,
     335                         "cityName": "丰县"
     336                     },
     337                     {
     338                         "id": 3297,
     339                         "cityName": "阜南县"
     340                     },
     341                     {
     342                         "id": 3441,
     343                         "cityName": "奉化"
     344                     },
     345                     {
     346                         "id": 3508,
     347                         "cityName": "阜宁县"
     348                     },
     349                     {
     350                         "id": 3509,
     351                         "cityName": "肥东县"
     352                     },
     353                     {
     354                         "id": 3541,
     355                         "cityName": "肥西县"
     356                     },
     357                     {
     358                         "id": 3544,
     359                         "cityName": "凤台县"
     360                     }
     361                 ]
     362             },
     363             {
     364                 "title": "G",
     365                 "items": [
     366                     {
     367                         "id": 2976,
     368                         "cityName": "赣州"
     369                     },
     370                     {
     371                         "id": 3472,
     372                         "cityName": "广元"
     373                     },
     374                     {
     375                         "id": 1969,
     376                         "cityName": "广州"
     377                     },
     378                     {
     379                         "id": 709,
     380                         "cityName": "贵阳"
     381                     },
     382                     {
     383                         "id": 898,
     384                         "cityName": "桂林"
     385                     },
     386                     {
     387                         "id": 2002,
     388                         "cityName": "高唐县"
     389                     },
     390                     {
     391                         "id": 2129,
     392                         "cityName": "灌南县"
     393                     },
     394                     {
     395                         "id": 2224,
     396                         "cityName": "固始县"
     397                     },
     398                     {
     399                         "id": 2518,
     400                         "cityName": "赣榆县"
     401                     },
     402                     {
     403                         "id": 2734,
     404                         "cityName": "高密"
     405                     },
     406                     {
     407                         "id": 2746,
     408                         "cityName": "高邮"
     409                     },
     410                     {
     411                         "id": 2752,
     412                         "cityName": "灌云县"
     413                     },
     414                     {
     415                         "id": 2819,
     416                         "cityName": "高碑店"
     417                     },
     418                     {
     419                         "id": 3060,
     420                         "cityName": "古交"
     421                     },
     422                     {
     423                         "id": 3385,
     424                         "cityName": "孤山1"
     425                     },
     426                     {
     427                         "id": 3455,
     428                         "cityName": "沽源县"
     429                     },
     430                     {
     431                         "id": 3490,
     432                         "cityName": "固镇县"
     433                     },
     434                     {
     435                         "id": 3502,
     436                         "cityName": "贵溪"
     437                     },
     438                     {
     439                         "id": 3589,
     440                         "cityName": "瓜州县"
     441                     },
     442                     {
     443                         "id": 3614,
     444                         "cityName": "广德县"
     445                     },
     446                     {
     447                         "id": 3619,
     448                         "cityName": "古田县"
     449                     },
     450                     {
     451                         "id": 3634,
     452                         "cityName": "格尔木"
     453                     },
     454                     {
     455                         "id": 3699,
     456                         "cityName": "高安"
     457                     }
     458                 ]
     459             },
     460             {
     461                 "title": "H",
     462                 "items": [
     463                     {
     464                         "id": 558,
     465                         "cityName": "哈尔滨"
     466                     },
     467                     {
     468                         "id": 2104,
     469                         "cityName": "海口"
     470                     },
     471                     {
     472                         "id": 3633,
     473                         "cityName": "海西蒙古族藏族自治州"
     474                     },
     475                     {
     476                         "id": 2233,
     477                         "cityName": "邯郸"
     478                     },
     479                     {
     480                         "id": 3652,
     481                         "cityName": "韩国首尔"
     482                     },
     483                     {
     484                         "id": 2845,
     485                         "cityName": "汉中"
     486                     },
     487                     {
     488                         "id": 261,
     489                         "cityName": "杭州"
     490                     },
     491                     {
     492                         "id": 639,
     493                         "cityName": "合肥"
     494                     },
     495                     {
     496                         "id": 895,
     497                         "cityName": "菏泽"
     498                     },
     499                     {
     500                         "id": 1074,
     501                         "cityName": "贺州"
     502                     },
     503                     {
     504                         "id": 3372,
     505                         "cityName": "鹤壁"
     506                     },
     507                     {
     508                         "id": 3611,
     509                         "cityName": "衡阳"
     510                     },
     511                     {
     512                         "id": 645,
     513                         "cityName": "呼和浩特"
     514                     },
     515                     {
     516                         "id": 2205,
     517                         "cityName": "湖州"
     518                     },
     519                     {
     520                         "id": 3397,
     521                         "cityName": "葫芦岛"
     522                     },
     523                     {
     524                         "id": 594,
     525                         "cityName": "淮安"
     526                     },
     527                     {
     528                         "id": 699,
     529                         "cityName": "淮北"
     530                     },
     531                     {
     532                         "id": 1953,
     533                         "cityName": "淮南"
     534                     },
     535                     {
     536                         "id": 3124,
     537                         "cityName": "黄冈"
     538                     },
     539                     {
     540                         "id": 2451,
     541                         "cityName": "黄山"
     542                     },
     543                     {
     544                         "id": 255,
     545                         "cityName": "惠州"
     546                     },
     547                     {
     548                         "id": 1774,
     549                         "cityName": "海安县"
     550                     },
     551                     {
     552                         "id": 1840,
     553                         "cityName": "海阳"
     554                     },
     555                     {
     556                         "id": 2347,
     557                         "cityName": "海门"
     558                     },
     559                     {
     560                         "id": 2356,
     561                         "cityName": "黄骅"
     562                     },
     563                     {
     564                         "id": 2878,
     565                         "cityName": "霍山县"
     566                     },
     567                     {
     568                         "id": 3125,
     569                         "cityName": "红安县"
     570                     },
     571                     {
     572                         "id": 3266,
     573                         "cityName": "洪泽县"
     574                     },
     575                     {
     576                         "id": 3291,
     577                         "cityName": "怀来县"
     578                     },
     579                     {
     580                         "id": 3494,
     581                         "cityName": "霍邱县"
     582                     }
     583                 ]
     584             },
     585             {
     586                 "title": "J",
     587                 "items": [
     588                     {
     589                         "id": 771,
     590                         "cityName": "吉林"
     591                     },
     592                     {
     593                         "id": 470,
     594                         "cityName": "济南"
     595                     },
     596                     {
     597                         "id": 996,
     598                         "cityName": "济宁"
     599                     },
     600                     {
     601                         "id": 2230,
     602                         "cityName": "佳木斯"
     603                     },
     604                     {
     605                         "id": 1536,
     606                         "cityName": "嘉兴"
     607                     },
     608                     {
     609                         "id": 1777,
     610                         "cityName": "嘉峪关"
     611                     },
     612                     {
     613                         "id": 2242,
     614                         "cityName": "焦作"
     615                     },
     616                     {
     617                         "id": 2893,
     618                         "cityName": "揭阳"
     619                     },
     620                     {
     621                         "id": 654,
     622                         "cityName": "金华"
     623                     },
     624                     {
     625                         "id": 2543,
     626                         "cityName": "锦州"
     627                     },
     628                     {
     629                         "id": 2759,
     630                         "cityName": "晋城"
     631                     },
     632                     {
     633                         "id": 2316,
     634                         "cityName": "晋中"
     635                     },
     636                     {
     637                         "id": 2076,
     638                         "cityName": "荆门"
     639                     },
     640                     {
     641                         "id": 2070,
     642                         "cityName": "景德镇"
     643                     },
     644                     {
     645                         "id": 702,
     646                         "cityName": "九江"
     647                     },
     648                     {
     649                         "id": 1781,
     650                         "cityName": "酒泉"
     651                     },
     652                     {
     653                         "id": 1723,
     654                         "cityName": "蓟县"
     655                     },
     656                     {
     657                         "id": 2110,
     658                         "cityName": "巨野县"
     659                     },
     660                     {
     661                         "id": 2163,
     662                         "cityName": "金乡县"
     663                     },
     664                     {
     665                         "id": 2496,
     666                         "cityName": "靖江"
     667                     },
     668                     {
     669                         "id": 2584,
     670                         "cityName": "句容"
     671                     },
     672                     {
     673                         "id": 2629,
     674                         "cityName": "江阴"
     675                     },
     676                     {
     677                         "id": 2656,
     678                         "cityName": "莒南县"
     679                     },
     680                     {
     681                         "id": 2791,
     682                         "cityName": "嘉祥县"
     683                     },
     684                     {
     685                         "id": 2923,
     686                         "cityName": "吉木萨尔县"
     687                     },
     688                     {
     689                         "id": 3000,
     690                         "cityName": "莒县"
     691                     },
     692                     {
     693                         "id": 3034,
     694                         "cityName": "胶州"
     695                     },
     696                     {
     697                         "id": 3213,
     698                         "cityName": "金湖县"
     699                     },
     700                     {
     701                         "id": 3219,
     702                         "cityName": "建湖县"
     703                     },
     704                     {
     705                         "id": 3256,
     706                         "cityName": "鄄城县"
     707                     },
     708                     {
     709                         "id": 3294,
     710                         "cityName": "静海县"
     711                     },
     712                     {
     713                         "id": 3403,
     714                         "cityName": "金坛"
     715                     },
     716                     {
     717                         "id": 3428,
     718                         "cityName": "嘉峪关"
     719                     },
     720                     {
     721                         "id": 3539,
     722                         "cityName": "金寨县"
     723                     },
     724                     {
     725                         "id": 3548,
     726                         "cityName": "泾县"
     727                     },
     728                     {
     729                         "id": 3578,
     730                         "cityName": "绩溪县"
     731                     },
     732                     {
     733                         "id": 3600,
     734                         "cityName": "介休"
     735                     },
     736                     {
     737                         "id": 3677,
     738                         "cityName": "嘉善县"
     739                     },
     740                     {
     741                         "id": 3706,
     742                         "cityName": "吉首"
     743                     }
     744                 ]
     745             },
     746             {
     747                 "title": "K",
     748                 "items": [
     749                     {
     750                         "id": 907,
     751                         "cityName": "开封"
     752                     },
     753                     {
     754                         "id": 1833,
     755                         "cityName": "昆明"
     756                     },
     757                     {
     758                         "id": 2824,
     759                         "cityName": "昆山"
     760                     },
     761                     {
     762                         "id": 3540,
     763                         "cityName": "康保县"
     764                     },
     765                     {
     766                         "id": 3613,
     767                         "cityName": "库尔勒"
     768                     }
     769                 ]
     770             },
     771             {
     772                 "title": "L",
     773                 "items": [
     774                     {
     775                         "id": 3515,
     776                         "cityName": "来宾"
     777                     },
     778                     {
     779                         "id": 618,
     780                         "cityName": "莱芜"
     781                     },
     782                     {
     783                         "id": 1545,
     784                         "cityName": "兰州"
     785                     },
     786                     {
     787                         "id": 993,
     788                         "cityName": "廊坊"
     789                     },
     790                     {
     791                         "id": 2623,
     792                         "cityName": "丽江"
     793                     },
     794                     {
     795                         "id": 3038,
     796                         "cityName": "丽水"
     797                     },
     798                     {
     799                         "id": 762,
     800                         "cityName": "连云港"
     801                     },
     802                     {
     803                         "id": 3597,
     804                         "cityName": "辽源"
     805                     },
     806                     {
     807                         "id": 1527,
     808                         "cityName": "聊城"
     809                     },
     810                     {
     811                         "id": 1008,
     812                         "cityName": "临沂"
     813                     },
     814                     {
     815                         "id": 1067,
     816                         "cityName": "柳州"
     817                     },
     818                     {
     819                         "id": 2721,
     820                         "cityName": "六安"
     821                     },
     822                     {
     823                         "id": 2961,
     824                         "cityName": "六盘水"
     825                     },
     826                     {
     827                         "id": 3553,
     828                         "cityName": "陇南"
     829                     },
     830                     {
     831                         "id": 3312,
     832                         "cityName": "吕梁"
     833                     },
     834                     {
     835                         "id": 267,
     836                         "cityName": "洛阳"
     837                     },
     838                     {
     839                         "id": 2417,
     840                         "cityName": "鹿邑县"
     841                     },
     842                     {
     843                         "id": 2531,
     844                         "cityName": "洛川县"
     845                     },
     846                     {
     847                         "id": 2637,
     848                         "cityName": "庐江县"
     849                     },
     850                     {
     851                         "id": 2694,
     852                         "cityName": "溧阳"
     853                     },
     854                     {
     855                         "id": 2712,
     856                         "cityName": "涟水县"
     857                     },
     858                     {
     859                         "id": 2902,
     860                         "cityName": "乐亭县"
     861                     },
     862                     {
     863                         "id": 3120,
     864                         "cityName": "临朐县"
     865                     },
     866                     {
     867                         "id": 3202,
     868                         "cityName": "兰陵县"
     869                     },
     870                     {
     871                         "id": 3324,
     872                         "cityName": "临海"
     873                     },
     874                     {
     875                         "id": 3409,
     876                         "cityName": "莱阳"
     877                     },
     878                     {
     879                         "id": 3431,
     880                         "cityName": "龙口"
     881                     },
     882                     {
     883                         "id": 3446,
     884                         "cityName": "林西县"
     885                     },
     886                     {
     887                         "id": 3517,
     888                         "cityName": "郎溪县"
     889                     },
     890                     {
     891                         "id": 3549,
     892                         "cityName": "利辛县"
     893                     },
     894                     {
     895                         "id": 3579,
     896                         "cityName": "临桂县"
     897                     },
     898                     {
     899                         "id": 3582,
     900                         "cityName": "灵璧县"
     901                     },
     902                     {
     903                         "id": 3656,
     904                         "cityName": "滦平县"
     905                     },
     906                     {
     907                         "id": 3676,
     908                         "cityName": "临清"
     909                     }
     910                 ]
     911             },
     912             {
     913                 "title": "M",
     914                 "items": [
     915                     {
     916                         "id": 271,
     917                         "cityName": "马鞍山"
     918                     },
     919                     {
     920                         "id": 3333,
     921                         "cityName": "梅州"
     922                     },
     923                     {
     924                         "id": 3673,
     925                         "cityName": "美国凤凰城"
     926                     },
     927                     {
     928                         "id": 2402,
     929                         "cityName": "密云县"
     930                     },
     931                     {
     932                         "id": 3390,
     933                         "cityName": "蒙城县"
     934                     },
     935                     {
     936                         "id": 3492,
     937                         "cityName": "明光"
     938                     },
     939                     {
     940                         "id": 3675,
     941                         "cityName": "美国凤凰城"
     942                     }
     943                 ]
     944             },
     945             {
     946                 "title": "N",
     947                 "items": [
     948                     {
     949                         "id": 276,
     950                         "cityName": "南昌"
     951                     },
     952                     {
     953                         "id": 221,
     954                         "cityName": "南京"
     955                     },
     956                     {
     957                         "id": 723,
     958                         "cityName": "南宁"
     959                     },
     960                     {
     961                         "id": 238,
     962                         "cityName": "南通"
     963                     },
     964                     {
     965                         "id": 678,
     966                         "cityName": "宁波"
     967                     },
     968                     {
     969                         "id": 1135,
     970                         "cityName": "宁德"
     971                     },
     972                     {
     973                         "id": 1826,
     974                         "cityName": "南昌县"
     975                     },
     976                     {
     977                         "id": 3682,
     978                         "cityName": "宁国"
     979                     }
     980                 ]
     981             },
     982             {
     983                 "title": "P",
     984                 "items": [
     985                     {
     986                         "id": 3510,
     987                         "cityName": "平潭县"
     988                     },
     989                     {
     990                         "id": 1130,
     991                         "cityName": "莆田"
     992                     },
     993                     {
     994                         "id": 750,
     995                         "cityName": "濮阳"
     996                     },
     997                     {
     998                         "id": 1839,
     999                         "cityName": "蓬莱"
    1000                     },
    1001                     {
    1002                         "id": 2377,
    1003                         "cityName": "邳州"
    1004                     },
    1005                     {
    1006                         "id": 2386,
    1007                         "cityName": "平阴县"
    1008                     },
    1009                     {
    1010                         "id": 2685,
    1011                         "cityName": "平遥县"
    1012                     },
    1013                     {
    1014                         "id": 2962,
    1015                         "cityName": "盘县"
    1016                     },
    1017                     {
    1018                         "id": 3284,
    1019                         "cityName": "普宁"
    1020                     },
    1021                     {
    1022                         "id": 3542,
    1023                         "cityName": "沛县"
    1024                     },
    1025                     {
    1026                         "id": 3655,
    1027                         "cityName": "郫县"
    1028                     }
    1029                 ]
    1030             },
    1031             {
    1032                 "title": "Q",
    1033                 "items": [
    1034                     {
    1035                         "id": 1070,
    1036                         "cityName": "钦州"
    1037                     },
    1038                     {
    1039                         "id": 2211,
    1040                         "cityName": "秦皇岛"
    1041                     },
    1042                     {
    1043                         "id": 612,
    1044                         "cityName": "青岛"
    1045                     },
    1046                     {
    1047                         "id": 2599,
    1048                         "cityName": "衢州"
    1049                     },
    1050                     {
    1051                         "id": 3466,
    1052                         "cityName": "泉州"
    1053                     },
    1054                     {
    1055                         "id": 2296,
    1056                         "cityName": "启东"
    1057                     },
    1058                     {
    1059                         "id": 2408,
    1060                         "cityName": "青阳县"
    1061                     },
    1062                     {
    1063                         "id": 2612,
    1064                         "cityName": "奇台县"
    1065                     },
    1066                     {
    1067                         "id": 2861,
    1068                         "cityName": "青州"
    1069                     },
    1070                     {
    1071                         "id": 3056,
    1072                         "cityName": "曲阜"
    1073                     },
    1074                     {
    1075                         "id": 3069,
    1076                         "cityName": "迁安"
    1077                     },
    1078                     {
    1079                         "id": 3488,
    1080                         "cityName": "齐河县"
    1081                     },
    1082                     {
    1083                         "id": 3501,
    1084                         "cityName": "全椒县"
    1085                     },
    1086                     {
    1087                         "id": 3623,
    1088                         "cityName": "青铜峡"
    1089                     },
    1090                     {
    1091                         "id": 3662,
    1092                         "cityName": "沁阳"
    1093                     }
    1094                 ]
    1095             },
    1096             {
    1097                 "title": "R",
    1098                 "items": [
    1099                     {
    1100                         "id": 934,
    1101                         "cityName": "日照"
    1102                     },
    1103                     {
    1104                         "id": 873,
    1105                         "cityName": "如东县"
    1106                     },
    1107                     {
    1108                         "id": 2147,
    1109                         "cityName": "如皋"
    1110                     },
    1111                     {
    1112                         "id": 2896,
    1113                         "cityName": "乳山"
    1114                     },
    1115                     {
    1116                         "id": 3523,
    1117                         "cityName": "荣成"
    1118                     }
    1119                 ]
    1120             },
    1121             {
    1122                 "title": "S",
    1123                 "items": [
    1124                     {
    1125                         "id": 1131,
    1126                         "cityName": "三明"
    1127                     },
    1128                     {
    1129                         "id": 3093,
    1130                         "cityName": "三亚"
    1131                     },
    1132                     {
    1133                         "id": 1569,
    1134                         "cityName": "汕头"
    1135                     },
    1136                     {
    1137                         "id": 2280,
    1138                         "cityName": "商丘"
    1139                     },
    1140                     {
    1141                         "id": 226,
    1142                         "cityName": "上海"
    1143                     },
    1144                     {
    1145                         "id": 981,
    1146                         "cityName": "上饶"
    1147                     },
    1148                     {
    1149                         "id": 1866,
    1150                         "cityName": "绍兴"
    1151                     },
    1152                     {
    1153                         "id": 253,
    1154                         "cityName": "深圳"
    1155                     },
    1156                     {
    1157                         "id": 273,
    1158                         "cityName": "沈阳"
    1159                     },
    1160                     {
    1161                         "id": 3459,
    1162                         "cityName": "十堰"
    1163                     },
    1164                     {
    1165                         "id": 746,
    1166                         "cityName": "石家庄"
    1167                     },
    1168                     {
    1169                         "id": 220,
    1170                         "cityName": "苏州"
    1171                     },
    1172                     {
    1173                         "id": 732,
    1174                         "cityName": "宿迁"
    1175                     },
    1176                     {
    1177                         "id": 1726,
    1178                         "cityName": "宿州"
    1179                     },
    1180                     {
    1181                         "id": 2221,
    1182                         "cityName": "泗阳县"
    1183                     },
    1184                     {
    1185                         "id": 2335,
    1186                         "cityName": "濉溪县"
    1187                     },
    1188                     {
    1189                         "id": 2353,
    1190                         "cityName": "泗洪县"
    1191                     },
    1192                     {
    1193                         "id": 2561,
    1194                         "cityName": "寿光"
    1195                     },
    1196                     {
    1197                         "id": 2697,
    1198                         "cityName": "沭阳县"
    1199                     },
    1200                     {
    1201                         "id": 2722,
    1202                         "cityName": "寿县"
    1203                     },
    1204                     {
    1205                         "id": 2749,
    1206                         "cityName": "射阳县"
    1207                     },
    1208                     {
    1209                         "id": 2932,
    1210                         "cityName": "睢宁县"
    1211                     },
    1212                     {
    1213                         "id": 3039,
    1214                         "cityName": "遂昌县"
    1215                     },
    1216                     {
    1217                         "id": 3171,
    1218                         "cityName": "沙河"
    1219                     },
    1220                     {
    1221                         "id": 3186,
    1222                         "cityName": "三河"
    1223                     },
    1224                     {
    1225                         "id": 3222,
    1226                         "cityName": "舒城县"
    1227                     },
    1228                     {
    1229                         "id": 3532,
    1230                         "cityName": "商城县"
    1231                     },
    1232                     {
    1233                         "id": 3642,
    1234                         "cityName": "双流县"
    1235                     },
    1236                     {
    1237                         "id": 3644,
    1238                         "cityName": "泗县"
    1239                     }
    1240                 ]
    1241             },
    1242             {
    1243                 "title": "T",
    1244                 "items": [
    1245                     {
    1246                         "id": 600,
    1247                         "cityName": "台州"
    1248                     },
    1249                     {
    1250                         "id": 736,
    1251                         "cityName": "太原"
    1252                     },
    1253                     {
    1254                         "id": 265,
    1255                         "cityName": "泰安"
    1256                     },
    1257                     {
    1258                         "id": 606,
    1259                         "cityName": "泰州"
    1260                     },
    1261                     {
    1262                         "id": 684,
    1263                         "cityName": "唐山"
    1264                     },
    1265                     {
    1266                         "id": 476,
    1267                         "cityName": "天津"
    1268                     },
    1269                     {
    1270                         "id": 1778,
    1271                         "cityName": "天水"
    1272                     },
    1273                     {
    1274                         "id": 3318,
    1275                         "cityName": "通辽"
    1276                     },
    1277                     {
    1278                         "id": 885,
    1279                         "cityName": "铜陵"
    1280                     },
    1281                     {
    1282                         "id": 2982,
    1283                         "cityName": "吐鲁番地区"
    1284                     },
    1285                     {
    1286                         "id": 1312,
    1287                         "cityName": "桐庐县"
    1288                     },
    1289                     {
    1290                         "id": 1696,
    1291                         "cityName": "桐乡"
    1292                     },
    1293                     {
    1294                         "id": 2362,
    1295                         "cityName": "泰兴"
    1296                     },
    1297                     {
    1298                         "id": 2659,
    1299                         "cityName": "太仓"
    1300                     },
    1301                     {
    1302                         "id": 2718,
    1303                         "cityName": "天台县"
    1304                     },
    1305                     {
    1306                         "id": 2785,
    1307                         "cityName": "滕州"
    1308                     },
    1309                     {
    1310                         "id": 2983,
    1311                         "cityName": "吐鲁番"
    1312                     },
    1313                     {
    1314                         "id": 3132,
    1315                         "cityName": "太和县"
    1316                     },
    1317                     {
    1318                         "id": 3495,
    1319                         "cityName": "太湖县"
    1320                     },
    1321                     {
    1322                         "id": 3530,
    1323                         "cityName": "桐城"
    1324                     }
    1325                 ]
    1326             },
    1327             {
    1328                 "title": "W",
    1329                 "items": [
    1330                     {
    1331                         "id": 1563,
    1332                         "cityName": "威海"
    1333                     },
    1334                     {
    1335                         "id": 756,
    1336                         "cityName": "潍坊"
    1337                     },
    1338                     {
    1339                         "id": 768,
    1340                         "cityName": "温州"
    1341                     },
    1342                     {
    1343                         "id": 3300,
    1344                         "cityName": "乌兰察布"
    1345                     },
    1346                     {
    1347                         "id": 630,
    1348                         "cityName": "乌鲁木齐"
    1349                     },
    1350                     {
    1351                         "id": 222,
    1352                         "cityName": "无锡"
    1353                     },
    1354                     {
    1355                         "id": 3259,
    1356                         "cityName": "吴忠"
    1357                     },
    1358                     {
    1359                         "id": 1046,
    1360                         "cityName": "芜湖"
    1361                     },
    1362                     {
    1363                         "id": 421,
    1364                         "cityName": "武汉"
    1365                     },
    1366                     {
    1367                         "id": 1779,
    1368                         "cityName": "武威"
    1369                     },
    1370                     {
    1371                         "id": 985,
    1372                         "cityName": "婺源县"
    1373                     },
    1374                     {
    1375                         "id": 1051,
    1376                         "cityName": "芜湖县"
    1377                     },
    1378                     {
    1379                         "id": 1965,
    1380                         "cityName": "汶上县"
    1381                     },
    1382                     {
    1383                         "id": 2914,
    1384                         "cityName": "五河县"
    1385                     },
    1386                     {
    1387                         "id": 2967,
    1388                         "cityName": "蔚县"
    1389                     },
    1390                     {
    1391                         "id": 3177,
    1392                         "cityName": "文登"
    1393                     },
    1394                     {
    1395                         "id": 3313,
    1396                         "cityName": "文水县"
    1397                     },
    1398                     {
    1399                         "id": 3357,
    1400                         "cityName": "文安县"
    1401                     },
    1402                     {
    1403                         "id": 3360,
    1404                         "cityName": "涡阳县"
    1405                     },
    1406                     {
    1407                         "id": 3497,
    1408                         "cityName": "微山县"
    1409                     },
    1410                     {
    1411                         "id": 3686,
    1412                         "cityName": "无为县"
    1413                     }
    1414                 ]
    1415             },
    1416             {
    1417                 "title": "X",
    1418                 "items": [
    1419                     {
    1420                         "id": 719,
    1421                         "cityName": "西安"
    1422                     },
    1423                     {
    1424                         "id": 2137,
    1425                         "cityName": "西宁"
    1426                     },
    1427                     {
    1428                         "id": 802,
    1429                         "cityName": "厦门"
    1430                     },
    1431                     {
    1432                         "id": 3555,
    1433                         "cityName": "咸阳"
    1434                     },
    1435                     {
    1436                         "id": 3705,
    1437                         "cityName": "湘西州"
    1438                     },
    1439                     {
    1440                         "id": 3462,
    1441                         "cityName": "孝感"
    1442                     },
    1443                     {
    1444                         "id": 3156,
    1445                         "cityName": "忻州"
    1446                     },
    1447                     {
    1448                         "id": 2506,
    1449                         "cityName": "新乡"
    1450                     },
    1451                     {
    1452                         "id": 2189,
    1453                         "cityName": "新余"
    1454                     },
    1455                     {
    1456                         "id": 1590,
    1457                         "cityName": "信阳"
    1458                     },
    1459                     {
    1460                         "id": 2569,
    1461                         "cityName": "邢台"
    1462                     },
    1463                     {
    1464                         "id": 816,
    1465                         "cityName": "徐州"
    1466                     },
    1467                     {
    1468                         "id": 3078,
    1469                         "cityName": "宣城"
    1470                     },
    1471                     {
    1472                         "id": 1720,
    1473                         "cityName": "盱眙县"
    1474                     },
    1475                     {
    1476                         "id": 1869,
    1477                         "cityName": "新昌县"
    1478                     },
    1479                     {
    1480                         "id": 1926,
    1481                         "cityName": "兴化"
    1482                     },
    1483                     {
    1484                         "id": 2390,
    1485                         "cityName": "霞浦县"
    1486                     },
    1487                     {
    1488                         "id": 2580,
    1489                         "cityName": "响水县"
    1490                     },
    1491                     {
    1492                         "id": 2650,
    1493                         "cityName": "新沂"
    1494                     },
    1495                     {
    1496                         "id": 3253,
    1497                         "cityName": "萧县"
    1498                     },
    1499                     {
    1500                         "id": 3398,
    1501                         "cityName": "兴城"
    1502                     },
    1503                     {
    1504                         "id": 3489,
    1505                         "cityName": "象山县"
    1506                     },
    1507                     {
    1508                         "id": 3512,
    1509                         "cityName": "仙居县"
    1510                     },
    1511                     {
    1512                         "id": 3536,
    1513                         "cityName": "歙县"
    1514                     }
    1515                 ]
    1516             },
    1517             {
    1518                 "title": "Y",
    1519                 "items": [
    1520                     {
    1521                         "id": 753,
    1522                         "cityName": "烟台"
    1523                     },
    1524                     {
    1525                         "id": 2527,
    1526                         "cityName": "延安"
    1527                     },
    1528                     {
    1529                         "id": 759,
    1530                         "cityName": "盐城"
    1531                     },
    1532                     {
    1533                         "id": 239,
    1534                         "cityName": "扬州"
    1535                     },
    1536                     {
    1537                         "id": 2521,
    1538                         "cityName": "阳江"
    1539                     },
    1540                     {
    1541                         "id": 2768,
    1542                         "cityName": "阳泉"
    1543                     },
    1544                     {
    1545                         "id": 2341,
    1546                         "cityName": "宜昌"
    1547                     },
    1548                     {
    1549                         "id": 3698,
    1550                         "cityName": "宜春"
    1551                     },
    1552                     {
    1553                         "id": 1736,
    1554                         "cityName": "银川"
    1555                     },
    1556                     {
    1557                         "id": 2577,
    1558                         "cityName": "鹰潭"
    1559                     },
    1560                     {
    1561                         "id": 1073,
    1562                         "cityName": "玉林"
    1563                     },
    1564                     {
    1565                         "id": 1210,
    1566                         "cityName": "岳阳"
    1567                     },
    1568                     {
    1569                         "id": 1766,
    1570                         "cityName": "运城"
    1571                     },
    1572                     {
    1573                         "id": 1912,
    1574                         "cityName": "玉山县"
    1575                     },
    1576                     {
    1577                         "id": 2471,
    1578                         "cityName": "鱼台县"
    1579                     },
    1580                     {
    1581                         "id": 2553,
    1582                         "cityName": "仪征"
    1583                     },
    1584                     {
    1585                         "id": 2647,
    1586                         "cityName": "永城"
    1587                     },
    1588                     {
    1589                         "id": 2662,
    1590                         "cityName": "义乌"
    1591                     },
    1592                     {
    1593                         "id": 2869,
    1594                         "cityName": "宜兴"
    1595                     },
    1596                     {
    1597                         "id": 2917,
    1598                         "cityName": "余姚"
    1599                     },
    1600                     {
    1601                         "id": 3110,
    1602                         "cityName": "扬中"
    1603                     },
    1604                     {
    1605                         "id": 3216,
    1606                         "cityName": "沂南县"
    1607                     },
    1608                     {
    1609                         "id": 3309,
    1610                         "cityName": "延庆县"
    1611                     },
    1612                     {
    1613                         "id": 3505,
    1614                         "cityName": "颍上县"
    1615                     },
    1616                     {
    1617                         "id": 3519,
    1618                         "cityName": "阳谷县"
    1619                     },
    1620                     {
    1621                         "id": 3594,
    1622                         "cityName": "永康"
    1623                     },
    1624                     {
    1625                         "id": 3615,
    1626                         "cityName": "沂水县"
    1627                     },
    1628                     {
    1629                         "id": 3629,
    1630                         "cityName": "弋阳县"
    1631                     },
    1632                     {
    1633                         "id": 3659,
    1634                         "cityName": "郓城县"
    1635                     },
    1636                     {
    1637                         "id": 3663,
    1638                         "cityName": "伊川县"
    1639                     }
    1640                 ]
    1641             },
    1642             {
    1643                 "title": "Z",
    1644                 "items": [
    1645                     {
    1646                         "id": 1854,
    1647                         "cityName": "枣庄"
    1648                     },
    1649                     {
    1650                         "id": 1207,
    1651                         "cityName": "张家界"
    1652                     },
    1653                     {
    1654                         "id": 953,
    1655                         "cityName": "张家口"
    1656                     },
    1657                     {
    1658                         "id": 1792,
    1659                         "cityName": "张掖"
    1660                     },
    1661                     {
    1662                         "id": 585,
    1663                         "cityName": "镇江"
    1664                     },
    1665                     {
    1666                         "id": 490,
    1667                         "cityName": "郑州"
    1668                     },
    1669                     {
    1670                         "id": 706,
    1671                         "cityName": "中山"
    1672                     },
    1673                     {
    1674                         "id": 3205,
    1675                         "cityName": "中卫"
    1676                     },
    1677                     {
    1678                         "id": 2156,
    1679                         "cityName": "舟山"
    1680                     },
    1681                     {
    1682                         "id": 2414,
    1683                         "cityName": "周口"
    1684                     },
    1685                     {
    1686                         "id": 2058,
    1687                         "cityName": "珠海"
    1688                     },
    1689                     {
    1690                         "id": 826,
    1691                         "cityName": "淄博"
    1692                     },
    1693                     {
    1694                         "id": 3468,
    1695                         "cityName": "自贡"
    1696                     },
    1697                     {
    1698                         "id": 2420,
    1699                         "cityName": "张北县"
    1700                     },
    1701                     {
    1702                         "id": 2691,
    1703                         "cityName": "诸暨"
    1704                     },
    1705                     {
    1706                         "id": 2729,
    1707                         "cityName": "邹城"
    1708                     },
    1709                     {
    1710                         "id": 2743,
    1711                         "cityName": "张家港"
    1712                     },
    1713                     {
    1714                         "id": 3641,
    1715                         "cityName": "诸城"
    1716                     }
    1717                 ]
    1718             }
    1719         ]
    1720     }
    1721 }
    city.json

      JsonData.java 序列化 Json 数据: (GsonFormat)

      1 package com.dragon.android.cityselect.model;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 /**
      7  * Created by Auser on 2016/10/10.
      8  */
      9 
     10 public class JsonData {
     11 
     12 
     13     /**
     14      * result : 0
     15      * message : 接口通信成功!
     16      * responseData : {"History":[],"Recent":[],"Hot":[{"id":"226","cityName":"上海"},{"id":"447","cityName":"北京"},{"id":"221","cityName":"南京"},{"id":"220","cityName":"苏州"},{"id":"261","cityName":"杭州"},{"id":"476","cityName":"天津"}],"Common":[{"title":"A","items":[{"id":664,"cityName":"安庆"},{"id":3590,"cityName":"安吉县"}]},{"title":"B","items":[{"id":3612,"cityName":"巴州"},{"id":3366,"cityName":"白银"},{"id":910,"cityName":"蚌埠"},{"id":2818,"cityName":"保定"},{"id":1068,"cityName":"北海"},{"id":447,"cityName":"北京"},{"id":882,"cityName":"滨州"},{"id":2119,"cityName":"亳州"},{"id":3449,"cityName":"博尔塔拉蒙古自治州"},{"id":2202,"cityName":"滨海县"},{"id":2462,"cityName":"滨海新区大港"},{"id":2463,"cityName":"滨海新区塘沽"},{"id":2464,"cityName":"滨海新区汉沽"},{"id":2788,"cityName":"宝应县"},{"id":3452,"cityName":"博乐"},{"id":3487,"cityName":"霸州"}]},{"title":"C","items":[{"id":1889,"cityName":"沧州"},{"id":2611,"cityName":"昌吉自治州"},{"id":2329,"cityName":"长春"},{"id":651,"cityName":"长沙"},{"id":2926,"cityName":"长治"},{"id":237,"cityName":"常州"},{"id":1959,"cityName":"朝阳"},{"id":3339,"cityName":"潮州"},{"id":279,"cityName":"成都"},{"id":3527,"cityName":"承德"},{"id":2095,"cityName":"池州"},{"id":2303,"cityName":"赤峰"},{"id":901,"cityName":"滁州"},{"id":621,"cityName":"重庆"},{"id":920,"cityName":"崇明县"},{"id":2275,"cityName":"曹县"},{"id":2620,"cityName":"慈溪"},{"id":2709,"cityName":"常熟"},{"id":2779,"cityName":"茌平县"},{"id":3066,"cityName":"巢湖"},{"id":3135,"cityName":"长丰县"},{"id":3630,"cityName":"昌黎县"},{"id":3640,"cityName":"章丘"},{"id":3657,"cityName":"崇州"}]},{"title":"D","items":[{"id":3384,"cityName":"达卡(孟加拉国)"},{"id":1699,"cityName":"大连"},{"id":2700,"cityName":"大庆"},{"id":2290,"cityName":"大同"},{"id":579,"cityName":"德州"},{"id":3351,"cityName":"定州"},{"id":254,"cityName":"东莞"},{"id":1748,"cityName":"东营"},{"id":2208,"cityName":"德清县"},{"id":2286,"cityName":"东海县"},{"id":2608,"cityName":"定远县"},{"id":2715,"cityName":"东台"},{"id":3101,"cityName":"砀山县"},{"id":3150,"cityName":"大厂县"},{"id":3166,"cityName":"东乡县"},{"id":3281,"cityName":"丹阳"},{"id":3406,"cityName":"东明县"},{"id":3618,"cityName":"大悟县"},{"id":3643,"cityName":"敦煌"},{"id":3661,"cityName":"大名县"}]},{"title":"F","items":[{"id":2176,"cityName":"佛山"},{"id":801,"cityName":"福州"},{"id":3165,"cityName":"抚州"},{"id":2881,"cityName":"阜阳"},{"id":2262,"cityName":"富锦"},{"id":2399,"cityName":"凤阳县"},{"id":3157,"cityName":"繁峙县"},{"id":3162,"cityName":"丰县"},{"id":3297,"cityName":"阜南县"},{"id":3441,"cityName":"奉化"},{"id":3508,"cityName":"阜宁县"},{"id":3509,"cityName":"肥东县"},{"id":3541,"cityName":"肥西县"},{"id":3544,"cityName":"凤台县"}]},{"title":"G","items":[{"id":2976,"cityName":"赣州"},{"id":3472,"cityName":"广元"},{"id":1969,"cityName":"广州"},{"id":709,"cityName":"贵阳"},{"id":898,"cityName":"桂林"},{"id":2002,"cityName":"高唐县"},{"id":2129,"cityName":"灌南县"},{"id":2224,"cityName":"固始县"},{"id":2518,"cityName":"赣榆县"},{"id":2734,"cityName":"高密"},{"id":2746,"cityName":"高邮"},{"id":2752,"cityName":"灌云县"},{"id":2819,"cityName":"高碑店"},{"id":3060,"cityName":"古交"},{"id":3385,"cityName":"孤山1"},{"id":3455,"cityName":"沽源县"},{"id":3490,"cityName":"固镇县"},{"id":3502,"cityName":"贵溪"},{"id":3589,"cityName":"瓜州县"},{"id":3614,"cityName":"广德县"},{"id":3619,"cityName":"古田县"},{"id":3634,"cityName":"格尔木"},{"id":3699,"cityName":"高安"}]},{"title":"H","items":[{"id":558,"cityName":"哈尔滨"},{"id":2104,"cityName":"海口"},{"id":3633,"cityName":"海西蒙古族藏族自治州"},{"id":2233,"cityName":"邯郸"},{"id":3652,"cityName":"韩国首尔"},{"id":2845,"cityName":"汉中"},{"id":261,"cityName":"杭州"},{"id":639,"cityName":"合肥"},{"id":895,"cityName":"菏泽"},{"id":1074,"cityName":"贺州"},{"id":3372,"cityName":"鹤壁"},{"id":3611,"cityName":"衡阳"},{"id":645,"cityName":"呼和浩特"},{"id":2205,"cityName":"湖州"},{"id":3397,"cityName":"葫芦岛"},{"id":594,"cityName":"淮安"},{"id":699,"cityName":"淮北"},{"id":1953,"cityName":"淮南"},{"id":3124,"cityName":"黄冈"},{"id":2451,"cityName":"黄山"},{"id":255,"cityName":"惠州"},{"id":1774,"cityName":"海安县"},{"id":1840,"cityName":"海阳"},{"id":2347,"cityName":"海门"},{"id":2356,"cityName":"黄骅"},{"id":2878,"cityName":"霍山县"},{"id":3125,"cityName":"红安县"},{"id":3266,"cityName":"洪泽县"},{"id":3291,"cityName":"怀来县"},{"id":3494,"cityName":"霍邱县"}]},{"title":"J","items":[{"id":771,"cityName":"吉林"},{"id":470,"cityName":"济南"},{"id":996,"cityName":"济宁"},{"id":2230,"cityName":"佳木斯"},{"id":1536,"cityName":"嘉兴"},{"id":1777,"cityName":"嘉峪关"},{"id":2242,"cityName":"焦作"},{"id":2893,"cityName":"揭阳"},{"id":654,"cityName":"金华"},{"id":2543,"cityName":"锦州"},{"id":2759,"cityName":"晋城"},{"id":2316,"cityName":"晋中"},{"id":2076,"cityName":"荆门"},{"id":2070,"cityName":"景德镇"},{"id":702,"cityName":"九江"},{"id":1781,"cityName":"酒泉"},{"id":1723,"cityName":"蓟县"},{"id":2110,"cityName":"巨野县"},{"id":2163,"cityName":"金乡县"},{"id":2496,"cityName":"靖江"},{"id":2584,"cityName":"句容"},{"id":2629,"cityName":"江阴"},{"id":2656,"cityName":"莒南县"},{"id":2791,"cityName":"嘉祥县"},{"id":2923,"cityName":"吉木萨尔县"},{"id":3000,"cityName":"莒县"},{"id":3034,"cityName":"胶州"},{"id":3213,"cityName":"金湖县"},{"id":3219,"cityName":"建湖县"},{"id":3256,"cityName":"鄄城县"},{"id":3294,"cityName":"静海县"},{"id":3403,"cityName":"金坛"},{"id":3428,"cityName":"嘉峪关"},{"id":3539,"cityName":"金寨县"},{"id":3548,"cityName":"泾县"},{"id":3578,"cityName":"绩溪县"},{"id":3600,"cityName":"介休"},{"id":3677,"cityName":"嘉善县"},{"id":3706,"cityName":"吉首"}]},{"title":"K","items":[{"id":907,"cityName":"开封"},{"id":1833,"cityName":"昆明"},{"id":2824,"cityName":"昆山"},{"id":3540,"cityName":"康保县"},{"id":3613,"cityName":"库尔勒"}]},{"title":"L","items":[{"id":3515,"cityName":"来宾"},{"id":618,"cityName":"莱芜"},{"id":1545,"cityName":"兰州"},{"id":993,"cityName":"廊坊"},{"id":2623,"cityName":"丽江"},{"id":3038,"cityName":"丽水"},{"id":762,"cityName":"连云港"},{"id":3597,"cityName":"辽源"},{"id":1527,"cityName":"聊城"},{"id":1008,"cityName":"临沂"},{"id":1067,"cityName":"柳州"},{"id":2721,"cityName":"六安"},{"id":2961,"cityName":"六盘水"},{"id":3553,"cityName":"陇南"},{"id":3312,"cityName":"吕梁"},{"id":267,"cityName":"洛阳"},{"id":2417,"cityName":"鹿邑县"},{"id":2531,"cityName":"洛川县"},{"id":2637,"cityName":"庐江县"},{"id":2694,"cityName":"溧阳"},{"id":2712,"cityName":"涟水县"},{"id":2902,"cityName":"乐亭县"},{"id":3120,"cityName":"临朐县"},{"id":3202,"cityName":"兰陵县"},{"id":3324,"cityName":"临海"},{"id":3409,"cityName":"莱阳"},{"id":3431,"cityName":"龙口"},{"id":3446,"cityName":"林西县"},{"id":3517,"cityName":"郎溪县"},{"id":3549,"cityName":"利辛县"},{"id":3579,"cityName":"临桂县"},{"id":3582,"cityName":"灵璧县"},{"id":3656,"cityName":"滦平县"},{"id":3676,"cityName":"临清"}]},{"title":"M","items":[{"id":271,"cityName":"马鞍山"},{"id":3333,"cityName":"梅州"},{"id":3673,"cityName":"美国凤凰城"},{"id":2402,"cityName":"密云县"},{"id":3390,"cityName":"蒙城县"},{"id":3492,"cityName":"明光"},{"id":3675,"cityName":"美国凤凰城"}]},{"title":"N","items":[{"id":276,"cityName":"南昌"},{"id":221,"cityName":"南京"},{"id":723,"cityName":"南宁"},{"id":238,"cityName":"南通"},{"id":678,"cityName":"宁波"},{"id":1135,"cityName":"宁德"},{"id":1826,"cityName":"南昌县"},{"id":3682,"cityName":"宁国"}]},{"title":"P","items":[{"id":3510,"cityName":"平潭县"},{"id":1130,"cityName":"莆田"},{"id":750,"cityName":"濮阳"},{"id":1839,"cityName":"蓬莱"},{"id":2377,"cityName":"邳州"},{"id":2386,"cityName":"平阴县"},{"id":2685,"cityName":"平遥县"},{"id":2962,"cityName":"盘县"},{"id":3284,"cityName":"普宁"},{"id":3542,"cityName":"沛县"},{"id":3655,"cityName":"郫县"}]},{"title":"Q","items":[{"id":1070,"cityName":"钦州"},{"id":2211,"cityName":"秦皇岛"},{"id":612,"cityName":"青岛"},{"id":2599,"cityName":"衢州"},{"id":3466,"cityName":"泉州"},{"id":2296,"cityName":"启东"},{"id":2408,"cityName":"青阳县"},{"id":2612,"cityName":"奇台县"},{"id":2861,"cityName":"青州"},{"id":3056,"cityName":"曲阜"},{"id":3069,"cityName":"迁安"},{"id":3488,"cityName":"齐河县"},{"id":3501,"cityName":"全椒县"},{"id":3623,"cityName":"青铜峡"},{"id":3662,"cityName":"沁阳"}]},{"title":"R","items":[{"id":934,"cityName":"日照"},{"id":873,"cityName":"如东县"},{"id":2147,"cityName":"如皋"},{"id":2896,"cityName":"乳山"},{"id":3523,"cityName":"荣成"}]},{"title":"S","items":[{"id":1131,"cityName":"三明"},{"id":3093,"cityName":"三亚"},{"id":1569,"cityName":"汕头"},{"id":2280,"cityName":"商丘"},{"id":226,"cityName":"上海"},{"id":981,"cityName":"上饶"},{"id":1866,"cityName":"绍兴"},{"id":253,"cityName":"深圳"},{"id":273,"cityName":"沈阳"},{"id":3459,"cityName":"十堰"},{"id":746,"cityName":"石家庄"},{"id":220,"cityName":"苏州"},{"id":732,"cityName":"宿迁"},{"id":1726,"cityName":"宿州"},{"id":2221,"cityName":"泗阳县"},{"id":2335,"cityName":"濉溪县"},{"id":2353,"cityName":"泗洪县"},{"id":2561,"cityName":"寿光"},{"id":2697,"cityName":"沭阳县"},{"id":2722,"cityName":"寿县"},{"id":2749,"cityName":"射阳县"},{"id":2932,"cityName":"睢宁县"},{"id":3039,"cityName":"遂昌县"},{"id":3171,"cityName":"沙河"},{"id":3186,"cityName":"三河"},{"id":3222,"cityName":"舒城县"},{"id":3532,"cityName":"商城县"},{"id":3642,"cityName":"双流县"},{"id":3644,"cityName":"泗县"}]},{"title":"T","items":[{"id":600,"cityName":"台州"},{"id":736,"cityName":"太原"},{"id":265,"cityName":"泰安"},{"id":606,"cityName":"泰州"},{"id":684,"cityName":"唐山"},{"id":476,"cityName":"天津"},{"id":1778,"cityName":"天水"},{"id":3318,"cityName":"通辽"},{"id":885,"cityName":"铜陵"},{"id":2982,"cityName":"吐鲁番地区"},{"id":1312,"cityName":"桐庐县"},{"id":1696,"cityName":"桐乡"},{"id":2362,"cityName":"泰兴"},{"id":2659,"cityName":"太仓"},{"id":2718,"cityName":"天台县"},{"id":2785,"cityName":"滕州"},{"id":2983,"cityName":"吐鲁番"},{"id":3132,"cityName":"太和县"},{"id":3495,"cityName":"太湖县"},{"id":3530,"cityName":"桐城"}]},{"title":"W","items":[{"id":1563,"cityName":"威海"},{"id":756,"cityName":"潍坊"},{"id":768,"cityName":"温州"},{"id":3300,"cityName":"乌兰察布"},{"id":630,"cityName":"乌鲁木齐"},{"id":222,"cityName":"无锡"},{"id":3259,"cityName":"吴忠"},{"id":1046,"cityName":"芜湖"},{"id":421,"cityName":"武汉"},{"id":1779,"cityName":"武威"},{"id":985,"cityName":"婺源县"},{"id":1051,"cityName":"芜湖县"},{"id":1965,"cityName":"汶上县"},{"id":2914,"cityName":"五河县"},{"id":2967,"cityName":"蔚县"},{"id":3177,"cityName":"文登"},{"id":3313,"cityName":"文水县"},{"id":3357,"cityName":"文安县"},{"id":3360,"cityName":"涡阳县"},{"id":3497,"cityName":"微山县"},{"id":3686,"cityName":"无为县"}]},{"title":"X","items":[{"id":719,"cityName":"西安"},{"id":2137,"cityName":"西宁"},{"id":802,"cityName":"厦门"},{"id":3555,"cityName":"咸阳"},{"id":3705,"cityName":"湘西州"},{"id":3462,"cityName":"孝感"},{"id":3156,"cityName":"忻州"},{"id":2506,"cityName":"新乡"},{"id":2189,"cityName":"新余"},{"id":1590,"cityName":"信阳"},{"id":2569,"cityName":"邢台"},{"id":816,"cityName":"徐州"},{"id":3078,"cityName":"宣城"},{"id":1720,"cityName":"盱眙县"},{"id":1869,"cityName":"新昌县"},{"id":1926,"cityName":"兴化"},{"id":2390,"cityName":"霞浦县"},{"id":2580,"cityName":"响水县"},{"id":2650,"cityName":"新沂"},{"id":3253,"cityName":"萧县"},{"id":3398,"cityName":"兴城"},{"id":3489,"cityName":"象山县"},{"id":3512,"cityName":"仙居县"},{"id":3536,"cityName":"歙县"}]},{"title":"Y","items":[{"id":753,"cityName":"烟台"},{"id":2527,"cityName":"延安"},{"id":759,"cityName":"盐城"},{"id":239,"cityName":"扬州"},{"id":2521,"cityName":"阳江"},{"id":2768,"cityName":"阳泉"},{"id":2341,"cityName":"宜昌"},{"id":3698,"cityName":"宜春"},{"id":1736,"cityName":"银川"},{"id":2577,"cityName":"鹰潭"},{"id":1073,"cityName":"玉林"},{"id":1210,"cityName":"岳阳"},{"id":1766,"cityName":"运城"},{"id":1912,"cityName":"玉山县"},{"id":2471,"cityName":"鱼台县"},{"id":2553,"cityName":"仪征"},{"id":2647,"cityName":"永城"},{"id":2662,"cityName":"义乌"},{"id":2869,"cityName":"宜兴"},{"id":2917,"cityName":"余姚"},{"id":3110,"cityName":"扬中"},{"id":3216,"cityName":"沂南县"},{"id":3309,"cityName":"延庆县"},{"id":3505,"cityName":"颍上县"},{"id":3519,"cityName":"阳谷县"},{"id":3594,"cityName":"永康"},{"id":3615,"cityName":"沂水县"},{"id":3629,"cityName":"弋阳县"},{"id":3659,"cityName":"郓城县"},{"id":3663,"cityName":"伊川县"}]},{"title":"Z","items":[{"id":1854,"cityName":"枣庄"},{"id":1207,"cityName":"张家界"},{"id":953,"cityName":"张家口"},{"id":1792,"cityName":"张掖"},{"id":585,"cityName":"镇江"},{"id":490,"cityName":"郑州"},{"id":706,"cityName":"中山"},{"id":3205,"cityName":"中卫"},{"id":2156,"cityName":"舟山"},{"id":2414,"cityName":"周口"},{"id":2058,"cityName":"珠海"},{"id":826,"cityName":"淄博"},{"id":3468,"cityName":"自贡"},{"id":2420,"cityName":"张北县"},{"id":2691,"cityName":"诸暨"},{"id":2729,"cityName":"邹城"},{"id":2743,"cityName":"张家港"},{"id":3641,"cityName":"诸城"}]}]}
     17      */
     18 
     19     private String result;
     20     private String message;
     21     private ResponseDataBean responseData;
     22 
     23     public String getResult() {
     24         return result;
     25     }
     26 
     27     public void setResult(String result) {
     28         this.result = result;
     29     }
     30 
     31     public String getMessage() {
     32         return message;
     33     }
     34 
     35     public void setMessage(String message) {
     36         this.message = message;
     37     }
     38 
     39     public ResponseDataBean getResponseData() {
     40         return responseData;
     41     }
     42 
     43     public void setResponseData(ResponseDataBean responseData) {
     44         this.responseData = responseData;
     45     }
     46 
     47     public static class ResponseDataBean {
     48         private List<?> History = new ArrayList<>();
     49         private List<?> Recent = new ArrayList<>();
     50         /**
     51          * id : 226
     52          * cityName : 上海
     53          */
     54 
     55         private List<HotBean> Hot = new ArrayList<>();
     56         /**
     57          * title : A
     58          * items : [{"id":664,"cityName":"安庆"},{"id":3590,"cityName":"安吉县"}]
     59          */
     60 
     61         private List<CommonBean> Common = new ArrayList<>();
     62 
     63         public List<?> getHistory() {
     64             return History;
     65         }
     66 
     67         public void setHistory(List<?> History) {
     68             this.History = History;
     69         }
     70 
     71         public List<?> getRecent() {
     72             return Recent;
     73         }
     74 
     75         public void setRecent(List<?> Recent) {
     76             this.Recent = Recent;
     77         }
     78 
     79         public List<HotBean> getHot() {
     80             return Hot;
     81         }
     82 
     83         public void setHot(List<HotBean> Hot) {
     84             this.Hot = Hot;
     85         }
     86 
     87         public List<CommonBean> getCommon() {
     88             return Common;
     89         }
     90 
     91         public void setCommon(List<CommonBean> Common) {
     92             this.Common = Common;
     93         }
     94 
     95         public static class HotBean {
     96             private String id;
     97             private String cityName;
     98 
     99             public String getId() {
    100                 return id;
    101             }
    102 
    103             public void setId(String id) {
    104                 this.id = id;
    105             }
    106 
    107             public String getCityName() {
    108                 return cityName;
    109             }
    110 
    111             public void setCityName(String cityName) {
    112                 this.cityName = cityName;
    113             }
    114         }
    115 
    116         public static class CommonBean {
    117             private String title;
    118             /**
    119              * id : 664
    120              * cityName : 安庆
    121              */
    122 
    123             private List<ItemsBean> items = new ArrayList<>();
    124 
    125             public String getTitle() {
    126                 return title;
    127             }
    128 
    129             public void setTitle(String title) {
    130                 this.title = title;
    131             }
    132 
    133             public List<ItemsBean> getItems() {
    134                 return items;
    135             }
    136 
    137             public void setItems(List<ItemsBean> items) {
    138                 this.items = items;
    139             }
    140 
    141             public static class ItemsBean {
    142                 private int id;
    143                 private String cityName;
    144 
    145                 public int getId() {
    146                     return id;
    147                 }
    148 
    149                 public void setId(int id) {
    150                     this.id = id;
    151                 }
    152 
    153                 public String getCityName() {
    154                     return cityName;
    155                 }
    156 
    157                 public void setCityName(String cityName) {
    158                     this.cityName = cityName;
    159                 }
    160             }
    161         }
    162     }
    163 }
    JsonData

    --> 接下来, 先写布局, 可以看到第一张图片, 垂直的四个布局样式一样, 这里准备用组合控件的形式实现.

      单条布局 item_linear_layout.xml:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     android:layout_width="match_parent"
     5     android:layout_height="wrap_content"
     6     android:background="?attr/actionBarItemBackground"
     7     android:orientation="vertical">
     8 
     9     <View
    10         android:id="@+id/view_shape1"
    11         android:layout_width="match_parent"
    12         android:layout_height="1dp"
    13         android:background="#ccc"
    14         android:visibility="invisible" />
    15 
    16     <LinearLayout
    17         android:layout_width="match_parent"
    18         android:layout_height="wrap_content"
    19         android:gravity="center_vertical"
    20         android:orientation="horizontal"
    21         android:padding="16dp">
    22 
    23         <ImageView
    24             android:id="@+id/iv_icon"
    25             android:layout_width="wrap_content"
    26             android:layout_height="wrap_content"
    27             app:srcCompat="@mipmap/img_city" />
    28 
    29         <TextView
    30             android:id="@+id/tv_title"
    31             android:layout_width="wrap_content"
    32             android:layout_height="wrap_content"
    33             android:layout_weight="1"
    34             android:gravity="center_vertical"
    35             android:paddingLeft="16dp"
    36             android:text="入住城市" />
    37 
    38         <TextView
    39             android:id="@+id/tv_title_c"
    40             android:layout_width="wrap_content"
    41             android:layout_height="wrap_content"
    42             android:text="入住城市"
    43             android:textColor="#007F6E" />
    44 
    45         <ImageView
    46             android:layout_width="wrap_content"
    47             android:layout_height="wrap_content"
    48             app:srcCompat="@mipmap/back_black_normal" />
    49 
    50     </LinearLayout>
    51 
    52     <View
    53         android:id="@+id/view_shape2"
    54         android:layout_width="match_parent"
    55         android:layout_height="1dp"
    56         android:background="#ccc"
    57         android:visibility="invisible" />
    58 
    59 </LinearLayout>
    item_linear_layout

        自定义组合控件 DefineLinearLayout.java:

     1 package com.dragon.android.cityselect.view;
     2 
     3 import android.content.Context;
     4 import android.util.AttributeSet;
     5 import android.view.LayoutInflater;
     6 import android.view.View;
     7 import android.widget.ImageView;
     8 import android.widget.LinearLayout;
     9 import android.widget.TextView;
    10 
    11 import com.dragon.android.cityselect.R;
    12 
    13 /**
    14  * Created by Auser on 2016/10/10.
    15  */
    16 
    17 public class DefineLinearLayout extends LinearLayout {
    18 
    19     private View view_shape1;
    20     private View view_shape2;
    21     private ImageView iv_icon;
    22     private TextView tv_title;
    23     private TextView tv_title_c;
    24     private View layout;
    25 
    26     public DefineLinearLayout(Context context) {
    27         super(context);
    28     }
    29 
    30     public DefineLinearLayout(Context context, AttributeSet attrs) {
    31         super(context, attrs);
    32         initView(context, attrs);
    33     }
    34 
    35     private void initView(Context context, AttributeSet attrs) {
    36 
    37         // 加载布局
    38         layout = LayoutInflater.from(context).inflate(R.layout.item_linear_layout, this);
    39 
    40         view_shape1 = layout.findViewById(R.id.view_shape1);
    41         view_shape2 = layout.findViewById(R.id.view_shape2);
    42         iv_icon = (ImageView) layout.findViewById(R.id.iv_icon);
    43         tv_title = (TextView) layout.findViewById(R.id.tv_title);
    44         tv_title_c = (TextView) layout.findViewById(R.id.tv_title_c);
    45     }
    46 
    47     // 这里没有用自定义属性的方式修改数据
    48     public void changeData(Boolean isChecked, int imgRes, String title, String title_c) {
    49         view_shape1.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE);
    50         view_shape2.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE);
    51         iv_icon.setImageResource(imgRes);
    52         tv_title.setText(title);
    53         tv_title_c.setText(title_c);
    54     }
    55 
    56     public void changeData(Boolean isChecked) {
    57         view_shape1.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE);
    58         view_shape2.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE);
    59     }
    60 
    61     public void changeData(String title_c) {
    62         tv_title_c.setText(title_c);
    63     }
    64 }
    DefineLinearLayout

      然后在主布局 activity_main.xml 中写首页布局: (圆角)

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <shape xmlns:android="http://schemas.android.com/apk/res/android">
    3 
    4     <corners android:radius="15dp"/>
    5     <solid android:color="#fff"/>
    6 
    7 </shape>
    bg_shape_linear
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:tools="http://schemas.android.com/tools"
     4     android:id="@+id/activity_main"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     android:background="#ddd"
     8     android:orientation="vertical"
     9     android:padding="16dp"
    10     tools:context="com.dragon.android.cityselect.MainActivity">
    11 
    12     <LinearLayout
    13         android:layout_width="wrap_content"
    14         android:layout_height="wrap_content"
    15         android:background="@drawable/bg_shape_linear"
    16         android:orientation="vertical">
    17 
    18         <com.dragon.android.cityselect.view.DefineLinearLayout
    19             android:id="@+id/dl_city"
    20             android:layout_width="match_parent"
    21             android:layout_height="wrap_content"
    22             android:background="?attr/actionBarItemBackground"
    23             android:clickable="true"
    24             android:onClick="click" />
    25 
    26         <com.dragon.android.cityselect.view.DefineLinearLayout
    27             android:id="@+id/dl_key"
    28             android:layout_width="match_parent"
    29             android:layout_height="wrap_content"
    30             android:background="?attr/actionBarItemBackground"
    31             android:clickable="true"
    32             android:onClick="click" />
    33 
    34         <com.dragon.android.cityselect.view.DefineLinearLayout
    35             android:id="@+id/dl_time"
    36             android:layout_width="match_parent"
    37             android:layout_height="wrap_content"
    38             android:background="?attr/actionBarItemBackground"
    39             android:clickable="true"
    40             android:onClick="click" />
    41 
    42         <com.dragon.android.cityselect.view.DefineLinearLayout
    43             android:id="@+id/dl_day"
    44             android:layout_width="match_parent"
    45             android:layout_height="wrap_content"
    46             android:background="?attr/actionBarItemBackground"
    47             android:clickable="true"
    48             android:onClick="click" />
    49 
    50     </LinearLayout>
    51 
    52 </LinearLayout>
    activity_main

    --> 第三步, 写出城市选择的布局. 

      首先是右侧城市首字母选择的自定义 View (也可以使用自定义 ListView 实现) SlideBar.java:

      1 package com.dragon.android.cityselect.view;
      2 
      3 import android.content.Context;
      4 import android.graphics.Canvas;
      5 import android.graphics.Color;
      6 import android.graphics.Paint;
      7 import android.graphics.Typeface;
      8 import android.util.AttributeSet;
      9 import android.view.MotionEvent;
     10 import android.view.View;
     11 
     12 import com.dragon.android.cityselect.R;
     13 
     14 import java.util.ArrayList;
     15 
     16 /**
     17  * Created by Jerry on 16/10/11.
     18  */
     19 
     20 public class SlideBar extends View {
     21 
     22     private ArrayList<String> titles; // 首字母的集合(不一定为26个)
     23     private int position = -1;  // 被选中的字符的位置
     24     private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); // 画笔
     25 
     26     public SlideBar(Context context) {
     27         super(context);
     28     }
     29 
     30     public SlideBar(Context context, AttributeSet attrs) {
     31         super(context, attrs);
     32     }
     33 
     34     public void getTitles(ArrayList<String> titles){
     35         this.titles = titles;
     36     }
     37 
     38     @Override
     39     protected void onDraw(Canvas canvas) {
     40         super.onDraw(canvas);
     41 
     42         // 得到右侧宽高
     43         int width = getWidth();
     44         int height = getHeight() - 16;
     45 
     46         int codeHeight = height / titles.size(); // 计算出每一个字母占有的高度
     47 
     48         for (int i = 0; i < titles.size(); i++) {
     49             mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
     50             mPaint.setTypeface(Typeface.DEFAULT_BOLD);
     51             mPaint.setColor(Color.parseColor("#666666"));
     52             mPaint.setTextSize(20);
     53 
     54             // 给选中的 字母 不同的颜色
     55             if (position != -1 && position == i) {
     56                 mPaint.setColor(Color.parseColor("#3399ff"));
     57             }
     58             float xpos = (width - mPaint.measureText(titles.get(i))) / 2;
     59             float ypos = (i + 1) * codeHeight;
     60             // 画出字母
     61             canvas.drawText(titles.get(i), xpos, ypos, mPaint);
     62         }
     63     }
     64 
     65     /**
     66      * 处理触碰事件
     67      * 1. 当选择一个字符时, 显示中间的提示
     68      * 2. 当手势抬起后, 中间的提示取消
     69      */
     70     @Override
     71     public boolean onTouchEvent(MotionEvent event) {
     72         int action = event.getAction();
     73         switch (action) {
     74             case MotionEvent.ACTION_DOWN:
     75             case MotionEvent.ACTION_MOVE:
     76                 // 右侧选择栏的样式
     77                 setBackgroundResource(R.drawable.shape_slide_bar);
     78 
     79                 float ypos = event.getY(); // 先获取是哪一个被按下
     80                 position = (int) (ypos / getHeight() * titles.size());// 选中的字符的位置
     81 
     82                 if (position >= 0 && position < titles.size()) {
     83                     if (listener != null) {
     84                         // 通知 activity 选中的位置
     85                         listener.onCharClick(titles.get(position));
     86                     }
     87                 }
     88                 invalidate(); // 重绘
     89                 return true;
     90             case MotionEvent.ACTION_UP:
     91                 position = -1; // 重置位置
     92                 setBackgroundResource(android.R.color.transparent);
     93                 if (listener != null) {
     94                     listener.onClickUp();
     95                 }
     96                 break;
     97         }
     98         return super.onTouchEvent(event);
     99     }
    100 
    101     // 定义一个回调接口
    102     public interface OnSlideBarCharSelectListener {
    103         void onCharClick(String selectChar);
    104         void onClickUp();
    105     }
    106 
    107     private OnSlideBarCharSelectListener listener;
    108 
    109     public void setOnSlideBarCharSelectListener(OnSlideBarCharSelectListener listener) {
    110         this.listener = listener;
    111     }
    112 }
    SlideBar

      然后是城市选择的自定义 ListView (重点) CitySelect.java:

      1 package com.dragon.android.cityselect.view;
      2 
      3 import android.content.Context;
      4 import android.content.res.AssetManager;
      5 import android.util.AttributeSet;
      6 import android.view.LayoutInflater;
      7 import android.view.View;
      8 import android.view.ViewGroup;
      9 import android.widget.BaseAdapter;
     10 import android.widget.ListView;
     11 import android.widget.TextView;
     12 
     13 import com.dragon.android.cityselect.model.JsonData;
     14 import com.google.gson.Gson;
     15 
     16 import java.io.BufferedReader;
     17 import java.io.IOException;
     18 import java.io.InputStream;
     19 import java.io.InputStreamReader;
     20 import java.util.ArrayList;
     21 import java.util.List;
     22 
     23 import static android.R.id.text1;
     24 
     25 /**
     26  * Created by Auser on 2016/10/10.
     27  */
     28 
     29 public class CitySelect extends ListView {
     30 
     31     public CitySelect(Context context, AttributeSet attrs) {
     32         super(context, attrs);
     33         getJsonData(context);
     34 
     35         MyAdapter myAdapter = new MyAdapter(context);
     36         this.setAdapter(myAdapter);
     37     }
     38 
     39     private JsonData jsonData;
     40 
     41     public JsonData getJsonData(Context context) {
     42         // 加载 assets 中的文件, 并得到数据
     43         AssetManager assetManager = context.getAssets();
     44         try {
     45             InputStream is = assetManager.open("city.json");
     46             BufferedReader br = new BufferedReader(new InputStreamReader(is));
     47             StringBuffer stringBuffer = new StringBuffer();
     48             String str = null;
     49             while ((str = br.readLine()) != null) {
     50                 stringBuffer.append(str);
     51             }
     52             // GsonFormat
     53             jsonData = new Gson().fromJson(stringBuffer.toString(), JsonData.class);
     54         } catch (IOException e) {
     55             e.printStackTrace();
     56         }
     57         return jsonData;
     58     }
     59 
     60     public class MyAdapter extends BaseAdapter {
     61 
     62         private List<JsonData.ResponseDataBean.CommonBean> common;
     63         private List<JsonData.ResponseDataBean.CommonBean.ItemsBean> items;
     64         private Context context;
     65 
     66         public MyAdapter(Context context) {
     67             this.context = context;
     68         }
     69 
     70         // 一次性得到所有城市个数 (可以用下面的 getData() 方法)
     71         @Override
     72         public int getCount() {
     73             common = jsonData.getResponseData().getCommon();
     74             int sum = 0;
     75             for (int i = 0; i < common.size(); i++) {
     76                 items = common.get(i).getItems();
     77                 sum += items.size();
     78             }
     79             return jsonData == null ? 0 : sum;
     80         }
     81 
     82         @Override
     83         public JsonData.ResponseDataBean getItem(int position) {
     84             return jsonData.getResponseData();
     85         }
     86 
     87         @Override
     88         public long getItemId(int position) {
     89             return position;
     90         }
     91 
     92         @Override
     93         public View getView(int position, View convertView, ViewGroup parent) {
     94             JsonData.ResponseDataBean item = getItem(position);
     95             ViewHolder viewHolder;
     96             if (convertView == null) {
     97                 viewHolder = new ViewHolder();
     98                 // 直接使用 系统布局
     99                 convertView = LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, null);
    100 
    101                 viewHolder.tv_city = (TextView) convertView.findViewById(text1);
    102                 convertView.setTag(viewHolder);
    103             } else {
    104                 viewHolder = (ViewHolder) convertView.getTag();
    105             }
    106             // 修改数据 (得到城市内容)
    107             viewHolder.tv_city.setText(getData().get(position));
    108 
    109             return convertView;
    110         }
    111 
    112         // 加载所有城市的内容
    113         public ArrayList<String> getData() {
    114             ArrayList<String> datas = new ArrayList<>();
    115             for (int i = 0; i < common.size(); i++) {
    116                 for (int j = 0; j < common.get(i).getItems().size(); j++) {
    117                     datas.add(common.get(i).getItems().get(j).getCityName());
    118                 }
    119             }
    120             return datas;
    121         }
    122     }
    123 
    124     class ViewHolder {
    125         TextView tv_city;
    126     }
    127 }
    CitySelect

      最后是城市选择界面的布局: (EditText的样式, 右侧选择栏的样式, 中间的提示的样式)

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <shape xmlns:android="http://schemas.android.com/apk/res/android">
     3 
     4     <stroke
     5         android:width="1dp"
     6         android:color="#A3D154" />
     7     <corners android:radius="15dp" />
     8     <solid android:color="#fff" />
     9 
    10 </shape>
    bg_edit_text
    1 <?xml version="1.0" encoding="utf-8"?>
    2 <shape xmlns:android="http://schemas.android.com/apk/res/android">
    3     <corners
    4         android:bottomLeftRadius="10dp"
    5         android:topLeftRadius="10dp"/>
    6     <solid android:color="#50ff0000"/>
    7 </shape>
    shape_slide_bar
    1 <?xml version="1.0" encoding="utf-8"?>
    2 <shape xmlns:android="http://schemas.android.com/apk/res/android">
    3 
    4     <corners android:radius="15dp"/>
    5     <solid android:color="#A0CE51"/>
    6     <stroke android:width="10px" android:color="#5aaa"/>
    7 
    8 </shape>
    bg_shape_text_view
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:tools="http://schemas.android.com/tools"
     4     android:id="@+id/activity_city"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     android:focusable="true"
     8     android:focusableInTouchMode="true"
     9     tools:context="com.dragon.android.cityselect.CityActivity">
    10 
    11     <TextView
    12         android:id="@+id/tv_title"
    13         android:layout_width="match_parent"
    14         android:layout_height="?attr/actionBarSize"
    15         android:background="#ECECEC"
    16         android:gravity="center"
    17         android:text="全部城市" />
    18 
    19     <ImageView
    20         android:id="@+id/iv_back"
    21         android:layout_width="wrap_content"
    22         android:layout_height="wrap_content"
    23         android:layout_marginLeft="14dp"
    24         android:layout_marginTop="14dp"
    25         android:background="?attr/actionBarItemBackground"
    26         android:clickable="true"
    27         android:src="@mipmap/back_black_normal1" />
    28 
    29     <View
    30         android:id="@+id/vvv"
    31         android:layout_width="match_parent"
    32         android:layout_height="40dp"
    33         android:layout_alignParentLeft="true"
    34         android:layout_below="@+id/tv_title"
    35         android:background="#E0E0E0" />
    36 
    37     <EditText
    38         android:id="@+id/et_search"
    39         android:layout_width="match_parent"
    40         android:layout_height="30dp"
    41         android:layout_alignParentLeft="true"
    42         android:layout_below="@+id/tv_title"
    43         android:layout_marginTop="10dp"
    44         android:background="@drawable/bg_edit_text"
    45         android:drawableLeft="@mipmap/add_qiuyou_ic_search_dark"
    46         android:drawablePadding="10dp"
    47         android:hint="请输入关键字"
    48         android:paddingLeft="10dp" />
    49 
    50     <TextView
    51         android:id="@+id/tv_szm"
    52         android:layout_width="match_parent"
    53         android:layout_height="30dp"
    54         android:layout_alignParentLeft="true"
    55         android:layout_alignParentStart="true"
    56         android:layout_below="@+id/vvv"
    57         android:background="#E0E0E0"
    58         android:gravity="center_vertical"
    59         android:paddingLeft="15dp"
    60         android:text="A"
    61         android:textSize="16sp" />
    62 
    63     <com.dragon.android.cityselect.view.CitySelect
    64         android:id="@+id/lv_show"
    65         android:layout_width="match_parent"
    66         android:layout_height="match_parent"
    67         android:layout_alignParentLeft="true"
    68         android:layout_alignParentStart="true"
    69         android:layout_below="@+id/tv_szm" />
    70 
    71     <com.dragon.android.cityselect.view.SlideBar
    72         android:id="@+id/lv_szm"
    73         android:layout_width="30dp"
    74         android:layout_height="match_parent"
    75         android:layout_alignParentEnd="true"
    76         android:layout_alignParentRight="true"
    77         android:layout_below="@+id/vvv"
    78         android:layout_marginTop="30dp"
    79         android:divider="#0000"
    80         android:dividerHeight="0dp" />
    81 
    82     <TextView
    83         android:id="@+id/tv_show_szm"
    84         android:layout_width="80dp"
    85         android:layout_height="80dp"
    86         android:layout_centerInParent="true"
    87         android:background="@drawable/bg_shape_text_view"
    88         android:gravity="center"
    89         android:text="A"
    90         android:textColor="#fff"
    91         android:textSize="30sp"
    92         android:visibility="gone" />
    93 
    94 </RelativeLayout>
    activity_city

    --> 最后, Java 代码的实现:

      CityActivity.java 实现城市选择功能: (工具类 FirstLetter.java 根据汉字得到首字母并转换大写)

     1 package com.dragon.android.cityselect.util;
     2 
     3 import android.support.annotation.Nullable;
     4 
     5 import java.io.UnsupportedEncodingException;
     6 
     7 /**
     8  * Created by Auser on 2016/10/11.
     9  */
    10 
    11 public class FirstLetter {
    12 
    13     private static final int GB_SP_DIFF = 160;
    14     // 存放国标一级汉字不同读音的起始区位码
    15     private static final int[] secPosValueList = {1601, 1637, 1833, 2078, 2274, 2302,
    16             2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027,
    17             4086, 4390, 4558, 4684, 4925, 5249, 5600};
    18     // 存放国标一级汉字不同读音的起始区位码对应读音
    19     private static final char[] firstLetter = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
    20             'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'w', 'x',
    21             'y', 'z'};
    22 
    23     @Nullable
    24     public static String getFirstLetter(char ch) {
    25 
    26         byte[] uniCode = null;
    27         try {
    28             uniCode = String.valueOf(ch).getBytes("GBK");
    29         } catch (UnsupportedEncodingException e) {
    30             e.printStackTrace();
    31             return null;
    32         }
    33         if (uniCode[0] < 128 && uniCode[0] > 0) {
    34             return null;
    35         } else {
    36             return convert(uniCode);
    37         }
    38     }
    39 
    40     private static String convert(byte[] bytes) {
    41         char result = '-';
    42         int secPosValue = 0;
    43         int i;
    44         for (i = 0; i < bytes.length; i++) {
    45             bytes[i] -= GB_SP_DIFF;
    46         }
    47         secPosValue = bytes[0] * 100 + bytes[1];
    48         for (i = 0; i < 23; i++) {
    49             if (secPosValue >= secPosValueList[i]
    50                     && secPosValue < secPosValueList[i + 1]) {
    51                 result = firstLetter[i];
    52                 break;
    53             }
    54         }
    55         String string = String.valueOf(result);
    56         string = string.toUpperCase();
    57         return string;
    58     }
    59 }
    FirstLetter
      1 package com.dragon.android.cityselect;
      2 
      3 import android.content.Intent;
      4 import android.os.Bundle;
      5 import android.support.v7.app.AppCompatActivity;
      6 import android.view.View;
      7 import android.widget.AbsListView;
      8 import android.widget.AdapterView;
      9 import android.widget.TextView;
     10 
     11 import com.dragon.android.cityselect.model.JsonData;
     12 import com.dragon.android.cityselect.util.FirstLetter;
     13 import com.dragon.android.cityselect.view.CitySelect;
     14 import com.dragon.android.cityselect.view.SlideBar;
     15 
     16 import java.util.ArrayList;
     17 import java.util.List;
     18 
     19 public class CityActivity extends AppCompatActivity {
     20 
     21     private CitySelect lv_show;
     22     private CitySelect.MyAdapter myAdapter;
     23     private TextView tv_szm;
     24     private TextView tv_show_szm;
     25     private SlideBar lv_szm;
     26 
     27     private View lastClickedView;
     28     List<JsonData.ResponseDataBean.CommonBean> common;
     29     private List<JsonData.ResponseDataBean.CommonBean.ItemsBean> items;
     30     private String theText = "A";
     31 
     32     @Override
     33     protected void onCreate(Bundle savedInstanceState) {
     34         super.onCreate(savedInstanceState);
     35         setContentView(R.layout.activity_city);
     36         getSupportActionBar().hide();
     37 
     38         lv_show = (CitySelect) findViewById(R.id.lv_show);
     39         tv_szm = ((TextView) findViewById(R.id.tv_szm));
     40         tv_show_szm = ((TextView) findViewById(R.id.tv_show_szm));
     41 
     42         lv_show.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     43             @Override
     44             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     45                 // MainActivity 的startAcitivityForResult
     46                 Intent intent = getIntent();
     47                 TextView text1 = (TextView) view.findViewById(android.R.id.text1);
     48                 intent.putExtra("city", text1.getText());
     49                 setResult(RESULT_OK, intent);
     50                 finish();
     51             }
     52         });
     53         lv_show.setOnScrollListener(new AbsListView.OnScrollListener() {
     54             @Override
     55             public void onScrollStateChanged(AbsListView view, int scrollState) {
     56             }
     57 
     58             @Override
     59             public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
     60 //                TextView childAt = (TextView) lv_show.getChildAt(firstVisibleItem);
     61 //                if (childAt != null) {
     62                     // 通过城市名得到 首字母并转换大写
     63                     theText = FirstLetter.getFirstLetter(((CitySelect.MyAdapter)lv_show.getAdapter()).getData().get(firstVisibleItem).toCharArray()[0]);
     64                     tv_szm.setText(theText);
     65 //                }
     66             }
     67         });
     68 
     69         common = lv_show.getJsonData(this).getResponseData().getCommon();
     70         ArrayList<String> titles = new ArrayList<>();
     71         for (int i = 0; i < common.size(); i++) {
     72             titles.add(common.get(i).getTitle());
     73         }
     74         lv_szm = (SlideBar) findViewById(R.id.lv_szm);
     75         lv_szm.getTitles(titles);
     76         // 接口回调的实现
     77         lv_szm.setOnSlideBarCharSelectListener(new SlideBar.OnSlideBarCharSelectListener() {
     78 
     79             @Override
     80             public void onCharClick(String selectChar) {
     81                 tv_show_szm.setText(selectChar);
     82                 tv_show_szm.setVisibility(View.VISIBLE);
     83 
     84                 tv_szm.setText(selectChar);
     85                 int commonPosition = 0;
     86                 for (int i = 0; i < common.size(); i++) {
     87                     if (common.get(i).getTitle().equals(selectChar)) {
     88                         commonPosition = i;
     89                     }
     90                 }
     91                 int position = 0;
     92                 for (int j = 0; j < commonPosition; j++) {
     93                     items = common.get(j).getItems();
     94                     position += items.size();
     95                 }
     96 //                lv_show.smoothScrollToPosition(position); // 带动画 显示 某项 - notifyDataSetChanged() 对其没影响
     97                 lv_show.setSelection(position); // 跳转并使某项为 第一项 - notifyDataSetChanged() 则无效
     98             }
     99 
    100             @Override
    101             public void onClickUp() {
    102                 tv_show_szm.setVisibility(View.GONE);
    103             }
    104         });
    105 //        ArrayAdapter arrayAdapter = new ArrayAdapter<>(this, R.layout.item_szm, titles);
    106 //        lv_szm.setAdapter(arrayAdapter);
    107 //        lv_szm.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    108 //            @Override
    109 //            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    110 //                if (lastClickedView == null) {
    111 //                    lastClickedView = view;
    112 //                }
    113 //                if (lastClickedView == view) {
    114 //                } else {
    115 //                    ((TextView) lastClickedView).setTextColor(Color.parseColor("#666666"));
    116 //                }
    117 //                ((TextView) view).setTextColor(Color.WHITE);
    118 //                lastClickedView = view;
    119 //            }
    120 //        });
    121 
    122         findViewById(R.id.iv_back).setOnClickListener(new View.OnClickListener() {
    123             @Override
    124             public void onClick(View v) {
    125                 finish();
    126             }
    127         });
    128     }
    129 }
    CityActivity

      MainAcitivity.java 实现其余功能: (包含一个DataPicker - 外部包:

        compile 'com.github.flavienlaurent.datetimepicker:library:0.0.2'

      )

      1 package com.dragon.android.cityselect;
      2 
      3 import android.content.Intent;
      4 import android.os.Bundle;
      5 import android.os.Handler;
      6 import android.os.Message;
      7 import android.support.v7.app.AppCompatActivity;
      8 import android.view.View;
      9 import android.widget.TextView;
     10 
     11 import com.dragon.android.cityselect.view.DefineLinearLayout;
     12 import com.fourmob.datetimepicker.date.DatePickerDialog;
     13 import com.sleepbot.datetimepicker.time.RadialPickerLayout;
     14 import com.sleepbot.datetimepicker.time.TimePickerDialog;
     15 
     16 import java.util.Calendar;
     17 
     18 public class MainActivity extends AppCompatActivity {
     19 
     20     private DefineLinearLayout dl_city;
     21     private DefineLinearLayout dl_key;
     22     private DefineLinearLayout dl_time;
     23     private DefineLinearLayout dl_day;
     24     public static final int REQUEST_CODE = 0x000;
     25 
     26     private int[] imgs = {R.mipmap.img_city, R.mipmap.img_key_words, R.mipmap.imag_time, R.mipmap.img_days};
     27     private String[] titles = {"入住城市", "关键字", "入住时间", "入住天数"};
     28     private DefineLinearLayout[] dlls;
     29 
     30     private Bundle mSaveInstanceState;
     31     private Handler handler;
     32 
     33     @Override
     34     protected void onCreate(Bundle savedInstanceState) {
     35         super.onCreate(savedInstanceState);
     36         setContentView(R.layout.activity_main);
     37 
     38         initView();
     39         mSaveInstanceState = savedInstanceState;
     40     }
     41 
     42     private void initView() {
     43         dl_city = (DefineLinearLayout) findViewById(R.id.dl_city);
     44         dl_key = (DefineLinearLayout) findViewById(R.id.dl_key);
     45         dl_time = (DefineLinearLayout) findViewById(R.id.dl_time);
     46         dl_day = (DefineLinearLayout) findViewById(R.id.dl_day);
     47 
     48         dlls = new DefineLinearLayout[]{dl_city, dl_key, dl_time, dl_day};
     49         for (int i = 0; i < dlls.length; i++) {
     50             changeDatas(dlls[i], false, imgs[i], titles[i], titles[i]);
     51         }
     52         getDataPicker();
     53     }
     54 
     55     // 修改初始数据
     56     private void changeDatas(DefineLinearLayout layout, Boolean isChecked, int imgRes, String title, String title_c) {
     57         layout.changeData(isChecked, imgRes, title, title_c);
     58     }
     59 
     60     private void changeDatas(DefineLinearLayout layout, Boolean isChecked) {
     61         layout.changeData(isChecked);
     62     }
     63 
     64     private void changeData(DefineLinearLayout layout, String title_c) {
     65         layout.changeData(title_c);
     66     }
     67 
     68     private DefineLinearLayout lastLayout;
     69 
     70     // 点击事件
     71     public void click(View v) {
     72         if (lastLayout == null) {
     73             lastLayout = (DefineLinearLayout) v;
     74         }
     75         if (v == lastLayout) {
     76         } else {
     77             changeDatas(lastLayout, false);
     78         }
     79         changeDatas((DefineLinearLayout) v, true);
     80         lastLayout = (DefineLinearLayout) v;
     81         switch (v.getId()) {
     82             case R.id.dl_city:
     83                 // 城市选择
     84                 startActivityForResult(new Intent(this, CityActivity.class), REQUEST_CODE);
     85                 break;
     86             case R.id.dl_key:
     87                 break;
     88             case R.id.dl_time:
     89                 new DataPicker().showDataPicker(mSaveInstanceState);
     90                 isFirstTime = true; // 点击入住时间
     91                 break;
     92             case R.id.dl_day:
     93                 new DataPicker().showDataPicker(mSaveInstanceState);
     94                 isFirstTime = false; // 点击入住天数
     95                 break;
     96         }
     97     }
     98 
     99     @Override
    100     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    101         super.onActivityResult(requestCode, resultCode, data);
    102         if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
    103             String city = data.getStringExtra("city");
    104             changeData(dl_city, city);
    105         }
    106     }
    107 
    108     private void getDataPicker() {
    109         handler = new Handler(new Handler.Callback() {
    110             @Override
    111             public boolean handleMessage(Message msg) {
    112                 switch (msg.what) {
    113                     case MSG_WHAT:
    114                         if (isFirstTime) {
    115                             ((TextView) dl_time.findViewById(R.id.tv_title_c)).setText(msg.obj.toString());
    116                         } else {
    117                             ((TextView) dl_day.findViewById(R.id.tv_title_c)).setText(msg.obj.toString());
    118                         }
    119                         break;
    120                 }
    121                 return false;
    122             }
    123         });
    124     }
    125 
    126     private boolean isFirstTime = false; // 是否点击入住时间 (否则为 入住天数)
    127     private static final int MSG_WHAT = 0x00;
    128 
    129     // DataPicker
    130     class DataPicker implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
    131 
    132         public static final String DATEPICKER_TAG = "datepicker";
    133         public static final String TIMEPICKER_TAG = "timepicker";
    134         private Calendar calendar;
    135         private String mData;
    136 
    137         private void showDataPicker(Bundle savedInstanceState) {
    138             calendar = Calendar.getInstance();
    139 
    140             DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), false);
    141 
    142             datePickerDialog.setVibrate(false);
    143             datePickerDialog.setYearRange(1985, 2028);
    144             datePickerDialog.setCloseOnSingleTapDay(false);
    145             datePickerDialog.show(getSupportFragmentManager(), DATEPICKER_TAG);
    146 
    147             if (savedInstanceState != null) {
    148                 DatePickerDialog dpd = (DatePickerDialog) getSupportFragmentManager().findFragmentByTag(DATEPICKER_TAG);
    149                 if (dpd != null) {
    150                     dpd.setOnDateSetListener(this);
    151                 }
    152 
    153                 TimePickerDialog tpd = (TimePickerDialog) getSupportFragmentManager().findFragmentByTag(TIMEPICKER_TAG);
    154                 if (tpd != null) {
    155                     tpd.setOnTimeSetListener(this);
    156                 }
    157             }
    158         }
    159 
    160         @Override
    161         public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {
    162 //            Toast.makeText(MainActivity.this, "new date:" + year + "-" + month + "-" + day, Toast.LENGTH_LONG).show();
    163 //            TimePickerDialog timePickerDialog = TimePickerDialog.newInstance(this, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), false, false);
    164 //            timePickerDialog.setVibrate(false);
    165 //            timePickerDialog.setCloseOnSingleTapMinute(false);
    166 //            timePickerDialog.show(getSupportFragmentManager(), TIMEPICKER_TAG);
    167             Message msg = Message.obtain();
    168             msg.obj = year + "-" + month + "-" + day;
    169             msg.what = MSG_WHAT;
    170             handler.sendMessage(msg);
    171         }
    172 
    173         @Override
    174         public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
    175 //            Toast.makeText(MainActivity.this, "new time:" + hourOfDay + "-" + minute, Toast.LENGTH_LONG).show();
    176         }
    177     }
    178 }

    注意?> 要在 Manifest 中定义键盘覆盖, 否则点击 EditText 会把布局往上推.

    1 <activity
    2     android:name=".CityActivity"
    3     android:windowSoftInputMode="adjustPan|stateHidden"
    4     android:configChanges="keyboardHidden|orientation|screenSize" />

    程序 Demo: 链接:http://pan.baidu.com/s/1geW38GF 密码:k505

    ***************很久没发了,学习实在太累T T...******************

  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/xmcx1995/p/5951686.html
Copyright © 2011-2022 走看看