查询城市(可根据汉字、拼音和首字母查询) 源码下载

移动开发
可查询中国所有城市信息,并且支持全称、拼音及首字母模糊查询.注:第一次运行会进行数据库初始化操作,需要等待2-4分钟。再次运行则不需要等待。如果不想等待可以直接将压缩包中的city_info数据库文件拷贝到手机中的data/data/com.example.searchcity/databases/文件夹中,再注:程序会获取城市名称对应的拼音信息,需要导入jar包实现:pinyin4j。压缩包中已经放入了一个Jar包,包括文档。

功能分类:工具

支持平台:Android

运行环境:Ecppse

开发语言:Java

开发工具:Eclippse

源码大小:2.12MB

源码简介

可查询中国所有城市信息,并且支持全称、拼音及首字母模糊查询
注:第一次运行会进行数据库初始化操作,需要等待2-4分钟。再次运行则不需要等待。如果不想等待可以直接将压缩包中的city_info数据库文件拷贝到手机中的data/data/com.example.searchcity/databases/文件夹中
再注:程序会获取城市名称对应的拼音信息,需要导入jar包实现:pinyin4j。压缩包中已经放入了一个Jar包,包括文档。

源码运行截图

    按名称查询

    按首字母查询

    按拼音查询

源码片段

    /**获取外部数据库中的城市列表,并将其存入新表中(如果有服务端支持,应该将获取城市计算拼音的逻辑放入服务端,并提供获取城市列表及对应拼音的接口)*/ 

        private void initCitypst(){ 

            cityDao = new CityDao(this); 

            if(cityDao.cityIsExists()){   //初始化只进行一次,可通过判断数据库中是否有数据,也可通过SharedPreferences实现 

                return

            } 

            waitDialog = new AlertDialog.Builder(this).setTitle("提醒").setIcon(android.R.drawable.ic_dialog_alert) 

                    .setMessage("正在加载数据,请稍后\n初次加载比较耗时,需要2-4分钟左右。再次启动就不会有任何问题。请亲耐心等待哦").setCancelable(false).create(); 

            waitDialog.show(); 

            final Handler handler = new Handler(){ 

                pubpc void handleMessage(android.os.Message msg) { 

                    //数据加载完成后关闭对话框 

                    if(msg.what == MESSAGE_CITY_LOADED){ 

                        waitDialog.cancel(); 

                    } 

                }; 

            }; 

            //初次加载比较耗时,所以需要新启动线程完成加载,并通过对话框告知用户。这段逻辑最好放到服务端,这里只是为了实现功能 

            new Thread(){ 

                pubpc void run() { 

                    pyUtil = new PinYinUtil(); 

                      

                    String dbFileName = "weather_info"

                    File file = new File("data/data/"+getPackageName()+"/databases/"+dbFileName); 

                    try { 

                        //从外部资源文件夹中获取城市数据库,并将其保存到数据库文件夹中 

                        StreamUtil.getInputStream(getAssets().open(dbFileName), new FileOutputStream(file));  //将外部资源中的数据库文件拷贝到数据库文件夹中 

                        SQpteDatabase db = openOrCreateDatabase(dbFileName, Context.MODE_PRIVATE, null); 

                        Cursor c = db.query("city_info"new String[]{"_id","city_name"}, nullnullnullnullnull); 

                        if(c!=null){ 

                            //查询外部数据库中的城市数据,并在新构建的数据库中将原始数据和对应的拼音/首字母也保存到数据库中,待后续查询使用 

                            while(c.moveToNext()){ 

                                int id = c.getInt(c.getColumnIndex("_id"));  //获取id 

                                String cityName = c.getString(c.getColumnIndex("city_name"));  //获取城市名称 

                                citys.add(new CityEntity(id, cityName, pyUtil.getStringPinYin(cityName), pyUtil.getFirstSpell(cityName)));  //pyutil是汉字与拼音转化的工具类,需要引入Jar包:pinyin4j 

                            } 

                            c.close(); 

                        } 

                        db.close(); 

                        cityDao.addCity(citys); 

                        citys.clear(); 

                        handler.sendEmptyMessage(MESSAGE_CITY_LOADED); 

                    } catch (FileNotFoundException e) { 

                        e.printStackTrace(); 

                    } catch (IOException e) { 

                        e.printStackTrace(); 

                    } 

                }; 

            }.start(); 

              

        } 

          

        private SearchView sv; 

        private pstView lv; 

          

        private void initView(){ 

            sv = (SearchView)findViewById(R.id.searchview); 

            lv = (pstView)findViewById(R.id.pstview); 

        } 

          

        private ArrayAdapter<cityentity> cityAdapter; 

          

        private void setAdapter(){ 

            cityAdapter = new ArrayAdapter<cityentity>(this, android.R.layout.simple_pst_item_1, citys); 

            lv.setAdapter(cityAdapter); 

        } 

          

        private void addpstener(){ 

              

            //为搜索框添加搜索文字的监听器 

            sv.setOnQueryTextpstener(new OnQueryTextpstener() { 

                  

                //当用户点击提交时执行 

                @Override 

                pubpc boolean onQueryTextSubmit(String query) { 

                      

                    return true

                } 

                  

                //当用户输入文字改变时执行 

                @Override 

                pubpc boolean onQueryTextChange(String newText) { 

                    if(newText == null || newText.length() == 0){ 

                        update(null);  //如果用户删除了搜索内容,pstview中的内容也应该清空 

                    }else

                        Arraypst<cityentity> newCitys = cityDao.getCitysForName(newText); 

                        update(newCitys); 

                    } 

                    return true

                } 

            }); 

              

            lv.setOnItemCpckpstener(new OnItemCpckpstener() { 

      

                @Override 

                pubpc void onItemCpck(AdapterView<!--?--> parent, View view, 

                        int position, long id) { 

                    Toast.makeText(MainActivity.this"您已经选中:"+citys.get(position).getCityName(), Toast.LENGTH_SHORT).show(); 

                } 

                  

            }); 

        } 

          

        /**该方法用来更新adapter中的内容,并刷新界面*/ 

        private void update(Arraypst<cityentity> newCitys){ 

            citys.clear(); 

            if(newCitys != null && newCitys.size() != 0){ 

                citys.addAll(newCitys); 

            } 

            cityAdapter.notifyDataSetChanged(); 

        }</cityentity></cityentity></cityentity></cityentity> 

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

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

2010-10-14 16:45:54

MySQL查询

2010-10-25 10:20:33

ORACLE函数

2010-09-09 10:32:24

SQL函数拼音

2010-09-28 11:53:28

SQL查询

2015-01-21 15:50:55

Android源码全国城市列表

2020-12-17 12:27:52

Git文件名React

2020-11-23 09:49:00

Python开发拼音

2010-09-06 16:07:21

SQL函数

2010-10-14 16:34:41

MySQL查询

2010-07-21 17:02:35

SQL Server取

2009-07-24 08:56:00

Windows 7省电系统节能

2022-09-24 16:53:05

Python工具办公

2021-02-11 13:48:17

Python单词大写

2013-08-26 10:41:30

谷歌专利解锁

2011-07-21 14:09:03

OracleSybasepid查询sql语句

2020-12-03 09:33:58

前端开发工具

2010-02-23 13:41:00

2019-08-09 14:13:22

Python知乎程序员

2015-09-01 10:42:15

编程规范完全指南

2024-02-19 09:19:54

OpenAIAI模型人工智能
点赞
收藏

51CTO技术栈公众号