Android源码:获取全国城市列表 类似于联系人排序

移动开发 Android
中国城市列表,类似手机通讯录显示方式,可以通过触摸屏幕右边城市拼音首字母快速定位,还可通过中文、拼音快速查找。**修改demo在小米手机上排序错误的问题需要的朋友可以参考一下!如有侵权,请见谅..

功能分类:工具

支持平台:Android

运行环境:Eclipse

开发语言:Java

开发工具:Eclipse

源码大小:1.24MB

源码下载地址:http://down.51cto.com/data/1977281

源码简介

项目源地址:https://github.com/kk-java/ChineseCityList

中国城市列表,类似手机通讯录显示方式,可以通过触摸屏幕右边城市拼音首字母快速定位,还可通过中文、拼音快速查找。

** 修改demo在小米手机上排序错误的问题

需要的朋友可以参考一下!

如有侵权,请见谅..

源码运行截图

    运行截图

    运行截图

    运行截图

源码片段

  1. package com.liucanwen.citylist; 
  2.   
  3. import java.util.ArrayList; 
  4. import java.util.List; 
  5.   
  6. import android.app.Activity; 
  7. import android.content.Context; 
  8. import android.os.AsyncTask; 
  9. import android.os.Bundle; 
  10. import android.text.Editable; 
  11. import android.text.TextWatcher; 
  12. import android.util.Log; 
  13. import android.view.View; 
  14. import android.widget.AdapterView; 
  15. import android.widget.EditText; 
  16. import android.widget.Toast; 
  17.   
  18. import com.liucanwen.citylist.adapter.CityAdapter; 
  19. import com.liucanwen.citylist.data.CityData; 
  20. import com.liucanwen.citylist.model.CityItem; 
  21. import com.liucanwen.citylist.widget.ContactItemInterface; 
  22. import com.liucanwen.citylist.widget.ContactListViewImpl; 
  23.   
  24. public class CityListActivity extends Activity implements TextWatcher 
  25.     private Context context_ = CityListActivity.this
  26.   
  27.     private ContactListViewImpl listview; 
  28.   
  29.     private EditText searchBox; 
  30.     private String searchString; 
  31.   
  32.     private Object searchLock = new Object(); 
  33.     boolean inSearchMode = false
  34.   
  35.     private final static String TAG = "MainActivity2"
  36.   
  37.     List<contactiteminterface> contactList; 
  38.     List<contactiteminterface> filterList; 
  39.     private SearchListTask curSearchTask = null
  40.   
  41.     @Override 
  42.     public void onCreate(Bundle savedInstanceState) 
  43.     { 
  44.         super.onCreate(savedInstanceState); 
  45.         setContentView(R.layout.citylist); 
  46.   
  47.         filterList = new ArrayList<contactiteminterface>(); 
  48.         contactList = CityData.getSampleContactList(); 
  49.   
  50.         CityAdapter adapter = new CityAdapter(this,R.layout.city_item, contactList); 
  51.   
  52.         listview = (ContactListViewImpl) this.findViewById(R.id.listview); 
  53.         listview.setFastScrollEnabled(true); 
  54.         listview.setAdapter(adapter); 
  55.   
  56.         listview.setOnItemClickListener(new AdapterView.OnItemClickListener() 
  57.         { 
  58.             @Override 
  59.             public void onItemClick(AdapterView parent, View v, int position, 
  60.                     long id) 
  61.             { 
  62.                 List<contactiteminterface> searchList = inSearchMode ? filterList 
  63.                         : contactList; 
  64.   
  65.                 Toast.makeText(context_, 
  66.                         searchList.get(position).getDisplayInfo(), 
  67.                         Toast.LENGTH_SHORT).show(); 
  68.             } 
  69.         }); 
  70.   
  71.         searchBox = (EditText) findViewById(R.id.input_search_query); 
  72.         searchBox.addTextChangedListener(this); 
  73.     } 
  74.   
  75.     @Override 
  76.     public void afterTextChanged(Editable s) 
  77.     { 
  78.         searchString = searchBox.getText().toString().trim().toUpperCase(); 
  79.   
  80.         if (curSearchTask != null 
  81.                 && curSearchTask.getStatus() != AsyncTask.Status.FINISHED) 
  82.         { 
  83.             try 
  84.             { 
  85.                 curSearchTask.cancel(true); 
  86.             } catch (Exception e) 
  87.             { 
  88.                 Log.i(TAG, "Fail to cancel running search task"); 
  89.             } 
  90.   
  91.         } 
  92.         curSearchTask = new SearchListTask(); 
  93.         curSearchTask.execute(searchString); 
  94.     } 
  95.   
  96.     @Override 
  97.     public void beforeTextChanged(CharSequence s, int start, int count, 
  98.             int after) 
  99.     { 
  100.     } 
  101.   
  102.     @Override 
  103.     public void onTextChanged(CharSequence s, int start, int before, int count) 
  104.     { 
  105.         // do nothing 
  106.     } 
  107.   
  108.     private class SearchListTask extends AsyncTask<string, void,="" string=""
  109.     { 
  110.   
  111.         @Override 
  112.         protected String doInBackground(String... params) 
  113.         { 
  114.             filterList.clear(); 
  115.   
  116.             String keyword = params[0]; 
  117.   
  118.             inSearchMode = (keyword.length() > 0); 
  119.   
  120.             if (inSearchMode) 
  121.             { 
  122.                 // get all the items matching this 
  123.                 for (ContactItemInterface item : contactList) 
  124.                 { 
  125.                     CityItem contact = (CityItem) item; 
  126.   
  127.                     boolean isPinyin = contact.getFullName().toUpperCase().indexOf(keyword) > -1
  128.                     boolean isChinese = contact.getNickName().indexOf(keyword) > -1
  129.   
  130.                     if (isPinyin || isChinese) 
  131.                     { 
  132.                         filterList.add(item); 
  133.                     } 
  134.   
  135.                 } 
  136.   
  137.             } 
  138.             return null
  139.         } 
  140.   
  141.         protected void onPostExecute(String result) 
  142.         { 
  143.   
  144.             synchronized (searchLock) 
  145.             { 
  146.   
  147.                 if (inSearchMode) 
  148.                 { 
  149.   
  150.                     CityAdapter adapter = new CityAdapter(context_,R.layout.city_item, filterList); 
  151.                     adapter.setInSearchMode(true); 
  152.                     listview.setInSearchMode(true); 
  153.                     listview.setAdapter(adapter); 
  154.                 } else 
  155.                 { 
  156.                     CityAdapter adapter = new CityAdapter(context_,R.layout.city_item, contactList); 
  157.                     adapter.setInSearchMode(false); 
  158.                     listview.setInSearchMode(false); 
  159.                     listview.setAdapter(adapter); 
  160.                 } 
  161.             } 
  162.   
  163.         } 
  164.     } 
  165.   
  166. </string,></contactiteminterface></contactiteminterface></contactiteminterface></contactiteminterface> 

源码下载地址:http://down.51cto.com/data/1977281

责任编辑:闫佳明 来源: 网络整理
相关推荐

2014-12-30 11:51:35

ListViewItem View

2012-03-01 19:44:18

Android

2011-05-26 14:42:34

Android 手机

2012-05-22 09:21:10

数据中心PUEFacebook数据中

2012-05-21 14:36:18

Facebook开源

2010-01-27 14:08:56

Android查询联系

2017-09-01 15:42:00

MySQLOracledblink功能

2010-01-27 10:09:14

2015-03-10 14:41:56

AppStudio

2015-11-11 10:17:15

ios9联系人框架干货

2012-02-02 17:16:11

Windows PhoC#联系人资料

2020-11-19 15:26:36

SQLPandas代码

2023-10-29 15:14:22

人工智能鸽子

2020-02-02 14:45:55

联系人开源工具

2021-06-10 14:14:50

Windows命名微软

2011-08-12 10:16:10

iPhone通讯录联系人

2010-02-03 09:15:09

Linux XDMCP

2013-09-17 09:51:49

谷歌Bump移动应用

2012-03-26 21:38:36

智能

2012-02-24 09:25:58

点赞
收藏

51CTO技术栈公众号