Android 城市列表ListView 之 按首字母分组

来源:互联网 发布:安阳青峰网络 编辑:程序博客网 时间:2024/05/19 11:50

http://blog.csdn.net/onlyonecoder/article/details/8282419

首先准备两个Array:一个是城市TAg,另一个是城市Name

[html] view plaincopy
  1. <string-array name="city_group_list">  
  2.         <item>热门</item>  
  3.         <item>热门</item>  
  4.         <item>热门</item>  
  5.         <item>热门</item>  
  6.         <item>热门</item>  
  7.         <item>热门</item>  
  8.         <item>热门</item>  
  9.         <item>热门</item>  
  10.         <item>热门</item>  
  11.         <item>热门</item>  
  12.         <item>热门</item>  
  13.         <item>热门</item>  
  14.         <item>热门</item>  
  15.         <item>热门</item>  
  16.         <item>热门</item>  
  17.         <item>热门</item>  
  18.         <item>热门</item>  
  19.         <item>热门</item>  
  20.         <item>热门</item>  
  21.         <item>A</item>  
  22.         <item>A</item>  
  23.         <item>A</item>  
  24.         <item>A</item>  
  25.         <item>A</item>  
  26.         <item>B</item>  
  27.         <item>B</item>  
  28.         <item>B</item>  
  29.         <item>B</item>  
  30.         <item>B</item>  
  31.         <item>B</item>  
  32.         <item>C</item>  
  33.         <item>C</item>  
  34.         <item>C</item>  
  35.         <item>C</item>  
  36.         <item>C</item>  
  37.         <item>C</item>  
  38.         <item>C</item>  
  39.         <item>C</item>  
  40.         <item>C</item>  
  41.         <item>D</item>  
  42.         <item>D</item>  
  43.         <item>D</item>  
  44.         <item>D</item>  
  45.         <item>D</item>  
  46.         <item>D</item>  
  47.         <item>D</item>  
  48.         <item>E</item>  
  49.         <item>F</item>  
  50.         <item>F</item>  
  51.         <item>F</item>  
  52.         <item>G</item>  
  53.         <item>G</item>  
  54.         <item>G</item>  
  55.         <item>G</item>  
  56.         <item>G</item>  
  57.         <item>G</item>  
  58.         <item>H</item>  
  59.         <item>H</item>  
  60.         <item>H</item>  
  61.         <item>H</item>  
  62.         <item>H</item>  
  63.         <item>H</item>  
  64.         <item>H</item>  
  65.         <item>H</item>  
  66.         <item>H</item>  
  67.         <item>H</item>  
  68.         <item>H</item>  
  69.         <item>H</item>  
  70.         <item>H</item>  
  71.         <item>J</item>  
  72.         <item>J</item>  
  73.         <item>J</item>  
  74.         <item>J</item>  
  75.         <item>J</item>  
  76.         <item>J</item>  
  77.         <item>J</item>  
  78.         <item>J</item>  
  79.         <item>J</item>  
  80.         <item>J</item>  
  81.         <item>J</item>  
  82.         <item>J</item>  
  83.         <item>J</item>  
  84.         <item>K</item>  
  85.         <item>K</item>  
  86.         <item>K</item>  
  87.         <item>K</item>  
  88.         <item>K</item>  
  89.         <item>L</item>  
  90.         <item>L</item>  
  91.         <item>L</item>  
  92.         <item>L</item>  
  93.         <item>L</item>  
  94.         <item>L</item>  
  95.         <item>L</item>  
  96.         <item>L</item>  
  97.         <item>M</item>  
  98.         <item>M</item>  
  99.         <item>M</item>  
  100.         <item>M</item>  
  101.         <item>M</item>  
  102.         <item>N</item>  
  103.         <item>N</item>  
  104.         <item>N</item>  
  105.         <item>N</item>  
  106.         <item>N</item>  
  107.         <item>N</item>  
  108.         <item>N</item>  
  109.         <item>Q</item>  
  110.         <item>Q</item>  
  111.         <item>Q</item>  
  112.         <item>Q</item>  
  113.         <item>Q</item>  
  114.         <item>Q</item>  
  115.         <item>Q</item>  
  116.         <item>S</item>  
  117.         <item>S</item>  
  118.         <item>S</item>  
  119.         <item>S</item>  
  120.         <item>S</item>  
  121.         <item>S</item>  
  122.         <item>S</item>  
  123.         <item>S</item>  
  124.         <item>S</item>  
  125.         <item>S</item>  
  126.         <item>T</item>  
  127.         <item>T</item>  
  128.         <item>T</item>  
  129.         <item>T</item>  
  130.         <item>T</item>  
  131.         <item>T</item>  
  132.         <item>W</item>  
  133.         <item>W</item>  
  134.         <item>W</item>  
  135.         <item>W</item>  
  136.         <item>W</item>  
  137.         <item>W</item>  
  138.         <item>W</item>  
  139.         <item>W</item>  
  140.         <item>W</item>  
  141.         <item>W</item>  
  142.         <item>W</item>  
  143.         <item>X</item>  
  144.         <item>X</item>  
  145.         <item>X</item>  
  146.         <item>X</item>  
  147.         <item>X</item>  
  148.         <item>X</item>  
  149.         <item>X</item>  
  150.         <item>Y</item>  
  151.         <item>Y</item>  
  152.         <item>Y</item>  
  153.         <item>Y</item>  
  154.         <item>Y</item>  
  155.         <item>Y</item>  
  156.         <item>Y</item>  
  157.         <item>Y</item>  
  158.         <item>Y</item>  
  159.         <item>Y</item>  
  160.         <item>Y</item>  
  161.         <item>Z</item>  
  162.         <item>Z</item>  
  163.         <item>Z</item>  
  164.         <item>Z</item>  
  165.         <item>Z</item>  
  166.         <item>Z</item>  
  167.         <item>Z</item>  
  168.         <item>Z</item>  
  169.         <item>Z</item>  
  170.     </string-array>  
[html] view plaincopy
  1. <string-array name="city_description_list">  
  2.     <item>北京首都</item>  
  3.     <item>上海虹桥</item>  
  4.     <item>上海浦东</item>  
  5.     <item>广州</item>  
  6.     <item>深圳</item>  
  7.     <item>香港</item>  
  8.     <item>澳门</item>  
  9.     <item>天津</item>  
  10.     <item>成都</item>  
  11.     <item>重庆</item>  
  12.     <item>南京</item>  
  13.     <item>青岛</item>  
  14.     <item>珠海</item>  
  15.     <item>福州</item>  
  16.     <item>哈尔滨</item>  
  17.     <item>大连</item>  
  18.     <item>海口</item>  
  19.     <item>沈阳</item>  
  20.     <item>厦门</item>  
  21.     <item>安庆</item>  
  22.     <item>鞍山</item>  
  23.     <item>阿克苏</item>  
  24.     <item>阿勒泰</item>  
  25.     <item>安康</item>  
  26.     <item>北京首都</item>  
  27.     <item>北京南苑</item>  
  28.     <item>保山</item>  
  29.     <item>包头</item>  
  30.     <item>北海</item>  
  31.     <item>蚌埠</item>  
  32.     <item>重庆</item>  
  33.     <item>成都</item>  
  34.     <item>长沙</item>  
  35.     <item>长春</item>  
  36.     <item>常德</item>  
  37.     <item>长治</item>  
  38.     <item>常州</item>  
  39.     <item>朝阳</item>  
  40.     <item>赤峰</item>  
  41.     <item>大连</item>  
  42.     <item>敦煌</item>  
  43.     <item>大理</item>  
  44.     <item>达县</item>  
  45.     <item>东营</item>  
  46.     <item>丹东</item>  
  47.     <item>大同</item>  
  48.     <item>恩施</item>  
  49.     <item>福州</item>  
  50.     <item>阜阳</item>  
  51.     <item>富蕴</item>  
  52.     <item>广州</item>  
  53.     <item>桂林</item>  
  54.     <item>贵阳</item>  
  55.     <item>格尔木</item>  
  56.     <item>广汉</item>  
  57.     <item>赣州</item>  
  58.     <item>海口</item>  
  59.     <item>哈尔滨</item>  
  60.     <item>杭州</item>  
  61.     <item>合肥</item>  
  62.     <item>黄山</item>  
  63.     <item>呼和浩特</item>  
  64.     <item>海拉尔</item>  
  65.     <item>哈密</item>  
  66.     <item>汉中</item>  
  67.     <item>黑河</item>  
  68.     <item>衡阳</item>  
  69.     <item>和田</item>  
  70.     <item>黄岩</item>  
  71.     <item>吉林</item>  
  72.     <item>济南</item>  
  73.     <item>九江</item>  
  74.     <item>九寨黄龙</item>  
  75.     <item>吉安</item>  
  76.     <item>佳木斯</item>  
  77.     <item>嘉峪关</item>  
  78.     <item>济宁</item>  
  79.     <item>景德镇</item>  
  80.     <item>景洪</item>  
  81.     <item>晋江</item>  
  82.     <item>锦州</item>  
  83.     <item>酒泉</item>  
  84.     <item>昆明</item>  
  85.     <item>克拉玛依</item>  
  86.     <item>喀什</item>  
  87.     <item>库尔勒</item>  
  88.     <item>库车</item>  
  89.     <item>洛阳</item>  
  90.     <item>兰州</item>  
  91.     <item>拉萨</item>  
  92.     <item>连云港</item>  
  93.     <item>丽江</item>  
  94.     <item>临沂</item>  
  95.     <item>柳州</item>  
  96.     <item>泸州</item>  
  97.     <item>芒市</item>  
  98.     <item>梅县</item>  
  99.     <item>绵阳</item>  
  100.     <item>牡丹江</item>  
  101.     <item>满洲里</item>  
  102.     <item>南京</item>  
  103.     <item>宁波</item>  
  104.     <item>南昌</item>  
  105.     <item>南宁</item>  
  106.     <item>南通</item>  
  107.     <item>南充</item>  
  108.     <item>南阳</item>  
  109.     <item>青岛</item>  
  110.     <item>秦皇岛</item>  
  111.     <item>齐齐哈尔</item>  
  112.     <item>泉州</item>  
  113.     <item>衢州</item>  
  114.     <item>且末</item>  
  115.     <item>庆阳</item>  
  116.     <item>沈阳</item>  
  117.     <item>深圳</item>  
  118.     <item>上海虹桥</item>  
  119.     <item>上海浦东</item>  
  120.     <item>汕头</item>  
  121.     <item>石家庄</item>  
  122.     <item>苏州</item>  
  123.     <item>三亚</item>  
  124.     <item>沙市</item>  
  125.     <item>思茅</item>  
  126.     <item>天津</item>  
  127.     <item>塔城</item>  
  128.     <item>太原</item>  
  129.     <item>通化</item>  
  130.     <item>通辽</item>  
  131.     <item>铜仁</item>  
  132.     <item>温州</item>  
  133.     <item>武汉</item>  
  134.     <item>武汉王家</item>  
  135.     <item>无锡</item>  
  136.     <item>乌鲁木齐</item>  
  137.     <item>威海</item>  
  138.     <item>梧州</item>  
  139.     <item>万县</item>  
  140.     <item>潍坊</item>  
  141.     <item>乌兰浩特</item>  
  142.     <item>武夷山</item>  
  143.     <item>厦门</item>  
  144.     <item>徐州</item>  
  145.     <item>西安</item>  
  146.     <item>西宁</item>  
  147.     <item>西昌</item>  
  148.     <item>襄樊</item>  
  149.     <item>锡林浩特</item>  
  150.     <item>银川</item>  
  151.     <item>延安</item>  
  152.     <item>延吉</item>  
  153.     <item>烟台</item>  
  154.     <item>盐城</item>  
  155.     <item>宜宾</item>  
  156.     <item>宜昌</item>  
  157.     <item>伊宁</item>  
  158.     <item>义乌</item>  
  159.     <item>永州</item>  
  160.     <item>榆林</item>  
  161.     <item>珠海</item>  
  162.     <item>昭通</item>  
  163.     <item>张家界</item>  
  164.     <item>湛江</item>  
  165.     <item>芷江</item>  
  166.     <item>中甸</item>  
  167.     <item>舟山</item>  
  168.     <item>遵义</item>  
  169.     <item>郑州</item>  
  170. </string-array>  

在Activity中声明两个List,然后读取数据到list

[java] view plaincopy
  1. private List<String> list = new ArrayList<String>();  
  2. private List<String> listTag = new ArrayList<String>();  
[java] view plaincopy
  1. public void getData() {  
  2.     String city_name_list[] = CityListActivity.this.getResources()  
  3.             .getStringArray(R.array.city_description_list);  
  4.     String city_list_tag[] = CityListActivity.this.getResources()  
  5.             .getStringArray(R.array.city_group_list);  
  6.     // ///////////////////////////  
  7.     String cityTag[] = { "热门""A""B""C""D""E""F""G""H""J",  
  8.             "K""L""M""N""Q""S""T""W""X""Y""Z" };  
  9.     int listsize[] = { 0195697136131358577,  
  10.             106117119 };  
  11.   
  12.     for (int j = 1; j < listsize.length; j++) {  
  13.         list.add(cityTag[j - 1]);  
  14.         listTag.add(cityTag[j - 1]);  
  15.         listsize[j] = listsize[j - 1] + listsize[j];  
  16.         for (int i = listsize[j - 1]; i < listsize[j]; i++) {  
  17.             list.add(city_name_list[i]);  
  18.             // System.out.println(city_list_tag[i]);  
  19. span style="white-space:pre">               </span>//city_group.add(city_list_tag[i]);  
  20.         }  
  21.     }  
  22. }  

适配器中这样写:

其中return super.isEnabled(position);设置城市首字母标示不可选

[java] view plaincopy
  1. public class CityListAdapter extends ArrayAdapter<String>{  
  2.       
  3.     private List<String> listTag = null;  
  4.     public CityListAdapter(Context context, List<String> objects, List<String> tags) {  
  5.         super(context, 0, objects);  
  6.         this.listTag = tags;  
  7.     }  
  8.        
  9.     @Override  
  10.     public boolean isEnabled(int position) {  
  11.         if(listTag.contains(getItem(position))){  
  12.             return false;  
  13.         }  
  14.         return super.isEnabled(position);  
  15.     }  
  16.     @Override  
  17.     public View getView(int position, View convertView, ViewGroup parent) {  
  18.         View view = convertView;  
  19.         if(listTag.contains(getItem(position))){  
  20.             view = LayoutInflater.from(getContext()).inflate(R.layout.citylist_tag, null);  
  21.         }else{                      
  22.             view = LayoutInflater.from(getContext()).inflate(R.layout.citylist_item, null);  
  23.         }  
  24.         TextView textView = (TextView) view.findViewById(R.id.group_list_item_text);  
  25.         textView.setText(getItem(position));  
  26.         return view;  
  27.     }  
  28. }  





0

0 0