- 浏览: 214770 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
gotosuzhou:
我想问下, 怎么设置汉字 我这个验证码想要有汉字
kaptcha 验证码组件使用简介 -
摸爬滚打NO1:
很好,详细
kaptcha 验证码组件使用简介 -
guodage003:
这是怎么回事?
eclipse提示failed to create JVM -
joefei:
我修改第二个没用,修改了第一个,size为128才可以
eclipse提示failed to create JVM -
tingle:
签名后的,可以吗?
Android APK反编译
该程序主要使用 中央气象局 省份 城市数据库为基础 进行读取
城市数据库下载 http://download.csdn.net/download/xianqiang1/3896880 感谢该兄弟的分享
下载的数据库 db_weather.db 放到sdcard/weather 目录下面 方便后续操作
为了更好的了解数据库,使用 SQLite Database Browser 可以打开数据库 查看数据 和表等信息,如下
了解了表的构成可以实现操作了
androidManifest.xml
配置文件声明 添加操作sdcard 权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cityselection" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <!-- sdcard操作允许 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".City_SelectionActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
布局文件main.xml
主要使用两个 spinner 分别实现城市 省份的选择
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:text="省份/直辖市" android:textSize="20dp" android:textStyle="bold" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Spinner android:id="@+id/provinces" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:text="市/县" android:textSize="20dp" android:textStyle="bold" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Spinner android:id="@+id/city" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
主程序City_SelectionActivity.java
package com.cityselection; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class City_SelectionActivity extends Activity { /** Called when the activity is first created. */ private File f = new File("/sdcard/weather/db_weather.db"); //数据库文件 private Spinner province; //省份spinner private Spinner city; //城市spinner private List<String> proset=new ArrayList<String>();//省份集合 private List<String> citset=new ArrayList<String>();//城市集合 private int pro_id; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); province=(Spinner)findViewById(R.id.provinces); ArrayAdapter<String> pro_adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,getProSet()); province.setAdapter(pro_adapter); province.setOnItemSelectedListener(new SelectProvince()); city=(Spinner)findViewById(R.id.city); city.setOnItemSelectedListener(new SelectCity()); } //选择改变状态 class SelectProvince implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub //获得省份ID pro_id=position; city.setAdapter(getAdapter()); } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } } //城市 选择改变状态 class SelectCity implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String cityname=parent.getItemAtPosition(position).toString(); //选择提示 Toast.makeText(getApplicationContext(), cityname+" "+getCityNum(position), 2000).show(); } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } } /** * 返回 省份集合 */ public List<String> getProSet(){ //打开数据库 SQLiteDatabase db1 = SQLiteDatabase.openOrCreateDatabase(f, null); Cursor cursor=db1.query("provinces", null, null, null, null, null, null); while(cursor.moveToNext()){ String pro=cursor.getString(cursor.getColumnIndexOrThrow("name")); proset.add(pro); } cursor.close(); db1.close(); return proset; } /** * 返回 城市集合 */ public List<String> getCitSet(int pro_id){ //清空城市集合 citset.clear(); //打开数据库 SQLiteDatabase db1 = SQLiteDatabase.openOrCreateDatabase(f, null); Cursor cursor=db1.query("citys", null, "province_id="+pro_id, null, null, null, null); while(cursor.moveToNext()){ String pro=cursor.getString(cursor.getColumnIndexOrThrow("name")); citset.add(pro); } cursor.close(); db1.close(); return citset; } /** * 返回适配器 */ public ArrayAdapter<String> getAdapter(){ ArrayAdapter<String> adapter1=new ArrayAdapter(this, android.R.layout.simple_spinner_item,getCitSet(pro_id)); return adapter1; } /** * 返回城市编号 以便调用天气预报api */ public long getCityNum(int position){ SQLiteDatabase db1 = SQLiteDatabase.openOrCreateDatabase(f, null); Cursor cursor=db1.query("citys", null, "province_id="+pro_id, null, null, null, null); cursor.moveToPosition(position); long citynum=Long.parseLong(cursor.getString(cursor.getColumnIndexOrThrow("city_num"))); cursor.close(); db1.close(); return citynum; } }
实现结果:
发表评论
-
android2.2根据电话号码查询联系人姓名的方法
2012-09-16 23:28 2464public class AndroidTest extend ... -
Android下PopupWindow隐藏及显示(showAtLocation/showAsDropDown)
2012-08-26 00:56 13063上一篇对PopupWindow的用法(位置、动画、焦点)做了详 ... -
Android中PopupWindow的用法(位置、动画、焦点)
2012-08-26 00:54 2015在Android中有很多级别的Window,不同级别的Wind ... -
Color android
2012-08-24 15:07 1167有以下12种常见的颜色: Color.BLACK ... -
【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
2012-08-16 15:03 978在进行UI布局的时候,可能经常会用到 android:g ... -
android ksoap 报错 org.xmlpull.v1.XmlPullParserException: expected: START_TAG 的解决经
2012-08-14 19:47 0在android上 调用webservice出现这个错误 ... -
Android与服务器端数据交互(基于SOAP协议整合android+webservice)
2012-08-14 12:31 2006转自:http://www.open-ope ... -
让你全面了解SQLite
2012-08-14 00:45 1357一.SQLite的介绍1.SQLite简介SQLite是 ... -
android 模拟器手机如何添加文件到sd卡
2012-08-14 00:05 1353使用android手机模拟器 ... -
Eclipse用svn管理Android项目问题
2012-08-11 15:10 941用svn控制版本,svn本身是不会识别哪些该传,哪些不该 ... -
ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
2012-08-11 14:58 1066在android开发中,经 ... -
关于eclipse中关联各版本Android.jar对应的源代码方法
2012-08-11 13:59 993网上看了很多关于在Android APP开发时,将And ... -
深度解析Handler类,以及HandlerThread
2012-08-11 13:43 1326Handler,HandlerThread下次再写;1)核心成 ... -
android在处理一写图片资源
2012-08-09 23:01 8161、Drawable → Bitmap publ ... -
Android用ImageView显示本地和网上的图片
2012-08-09 22:48 5421ImageView是Android程序中经常用到的组件, ... -
Android中LayoutInflater的使用
2012-08-09 18:42 963Inflater英文意思是膨胀,在Android中应该是 ... -
Android模拟器代理设置
2012-08-09 16:03 18081方法一 首先,Windows下,配置Adro ... -
android中ListView控件&&onItemClick点击事件
2012-08-09 15:46 1070转自:http://hi.baidu.com/ilybeen/ ... -
Android 获取设备各种信息以及其它
2012-08-06 14:27 1407做手机开发,想必都希望获取手机号码吧,android中有 ... -
android 安卓APP获取手机设备信息和手机号码的代码示例
2012-08-06 14:26 1848下面我从安卓开发的角度,简单写一下如何获取手机设备信息和 ...
相关推荐
这个场景可以通过创建一个联动的下拉选择器(Spinner)来实现,让用户能够逐级选择省份和城市,并获取到对应的城市编号。下面将详细介绍如何在Android中实现这样的功能。 首先,我们需要准备省份和城市的数据库或...
利用AlertDialog弹出对话框实现省份城市的选择,直接运行就可以,省份城市数据直接存在android项目的values目录的arrays.xml下,只需要在里面添加城市就可以增加省份与城市,另外实现了点击省份出现相应的城市,其实这...
"Android地名选择器 全国省市区选择器 城市选择 区县选择"是一个针对这种需求的专业组件,它允许用户在应用程序内方便地挑选中国境内的省份、城市以及区县。这个组件通常包含一个层次化的列表视图,用户可以逐级下拉...
首先,从标题“android 二级城市选择”来看,我们要构建的是一个具有层级关系的城市列表,用户可以逐级选择省份和城市。在这个过程中,我们需要设计用户界面(UI),包括布局文件和自定义控件,以便呈现清晰、易于...
解析数据和获取数据
在给定的“android 城市三级联动 获取城市名和城市编码”项目中,我们将会讨论如何利用本地XML文件存储城市数据,以及如何通过PopupWindow和ListView来实现这个功能。 首先,XML文件是存储结构化数据的常见方式,...
在这个项目中,开发者创建了一个Android应用,允许用户选择省份、城市,并获取城市编号,以便后续调用天气预报API。 首先,我们来看"三级联动"的概念。这通常指的是在一个表单或菜单中,有三个级别的选项相互关联,...
三:汉字转成拼音的功能,很多时候实现联系人或者城市列表等实现A-Z的排序功能,我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,这里我使用了PinYin4j.jar将汉字转换为拼音. ...
这个功能实现的核心在于构建一个可滚动的选择界面,包含省份和城市的数据,并能够进行交互操作。以下是对这个知识点的详细说明: 1. **布局设计**: - 使用`RecyclerView`或`ListView`来展示城市列表,这两个组件...
这个"Android选择城市Demo"提供了一种实现方式,允许用户通过输入城市拼音或首字母进行快速搜索。以下是关于这个Demo的一些关键知识点: 1. **ListView与Adapter**: 选择城市界面通常会使用ListView来展示城市列表...
在Android开发中,创建一个带有ListView的对话框是常见的需求,比如在用户需要选择省份或城市时。这个场景可以通过自定义对话框实现,提供更好的用户体验。以下是对标题和描述中涉及知识点的详细解释: 1. **...
综上所述,实现“android省市区城市三级列表选择”需要掌握SQLite数据库操作、自定义Adapter、ListView的使用、多线程数据加载以及良好的用户交互设计等多个Android开发关键知识点。通过这个功能的实现,开发者可以...
在选择省份时,我们需要监听ListView的onItemClick事件,获取选中的省份ID,然后加载对应的市级数据。同理,当市级和区级ListView的选择发生变化时,也需要更新下一级的数据。为了实现联动效果,我们可以设置...
【Android源码全国城市选择列表Demo】是一款专为Android初学者设计的小型示例应用,旨在帮助开发者了解如何在Android项目中实现一个全国城市的选择列表。这个Demo将城市数据存储在SQLite数据库中,并提供了灵活的...
综上所述,实现"Android选择城市列表"不仅需要理解并运用Android的基础组件和数据结构,还需要掌握数据加载、用户交互和性能优化等相关技术。通过合理的编程实践,可以构建出高效且用户友好的城市选择功能。
该项目实现了地区库的完美拷贝,这意味着它包含了全国所有省份、城市、县以及乡镇的数据。据描述,数据量超过5万个,覆盖了全国各地,确保了地址选择的全面性和准确性。这些数据通常以SQLite数据库的形式存储,方便...
在Android应用开发中,地区选择器是一个常见的组件,用于让用户选择他们的城市或所在区域。"Android 地区选择器,简洁集成,节省资源"的标题表明这是一个专为开发者设计的解决方案,旨在简化集成过程,同时优化性能...
在省市区三级联动中,当用户在一级(省)选择后,二级(市)会自动更新为对应省份的城市,同理,当市被选中时,三级(区)也会随之更新,形成联动效果。 "Cascade_Master"组件的实现原理主要包括以下几个关键点: ...
本项目“Android城市切换选择列表”旨在提供一个高效、用户友好的解决方案,实现类似手机联系人界面的首字母查询和排序功能。 首先,这个功能的核心是数据结构的设计。在Android中,城市数据通常存储为SQLite数据库...
1. **ListView与RecyclerView**: Android城市列表选择器的核心组件通常是ListView或者RecyclerView。ListView是Android早期版本中的列表视图,而RecyclerView是后来引入的更高效、更灵活的列表视图组件。两者都可以...