一、请看效果图“:

二、程序的代码:

1、MainActivity.java

package com.loveplusplus.loader.demo.ui;





import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;





import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

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;





import com.loveplusplus.loader.demo.R;

import com.loveplusplus.loader.demo.util.HttpService;





/**

 * 省市县三级联动

 * 

 * 2014年10月30日 15:22:04

 * 

 * @author YJBo

 * 

 */

public class MainActivity extends Activity {

private static final String HOST_URL = "http://218.241.233.121/yqw";

private static final String PROVINCE_URL = "http://218.241.233.121/yqw/w/c/post?app=join&mdl=web&act=provinces&type=json";

private static final String CITY_URI = HOST_URL

+ "/w/c/post?

app=join&mdl=web&type=json&act=citys&col.province=";

private static final String COUNTY_URL = HOST_URL

+ "/w/c/post?

app=join&mdl=web&type=json&act=areas&col.city=";

// col.province

private Spinner provinceSpinner;

private Spinner citySpinner;

private Spinner countySpinner;

// 省市县数组

private String[] Province;

private String[] ProvinceCode;

private String json;

// 市---

private String json2;

private String[] City;

private String[] CityCode;

// 县

private String json3;

private String[] Country;

private String[] CountryCode;





@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 获取省的名称

loadProvices();

}





private void loadProvices() {

new Thread(new Runnable() {

@Override

public void run() {

try {

// 初步进入页面。获取全部省份

json = HttpService.postParamAndFileOB(PROVINCE_URL);

mHandler.sendEmptyMessage(1);

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}





// 市---新

private void loadCitys2(final String provinceCode) {

if (null == provinceCode)

return;

new Thread(new Runnable() {

@Override

public void run() {

try {

// 获取一个省的全部市

json2 = HttpService.postParamAndFileOB(CITY_URI

+ provinceCode);

mHandler.sendEmptyMessage(2);

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}





// 县

private void loadCitys3(final String CountryCode) {

if (null == CityCode)

return;

new Thread(new Runnable() {

@Override

public void run() {

try {

// 获取县份数据

json3 = HttpService.postParamAndFileOB(COUNTY_URL

+ CountryCode);

mHandler.sendEmptyMessage(3);

System.out.println("------sheng----麻烦呢--33--");

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}





Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

try {

JSONArray array = new JSONArray(json);

Province = new String[array.length()];

ProvinceCode = new String[array.length()];

for (int i = 0; i < array.length(); i++) {

JSONObject obj = (JSONObject) array.get(i);

Province[i] = obj.getString("name");

ProvinceCode[i] = obj.getString("code");

}

provinceSpinner = (Spinner) findViewById(R.id.spinner_province);

// 初始化下拉列表载入数据适配器

ArrayAdapter<String> adapter = new ArrayAdapter<String>(

MainActivity.this,

android.R.layout.simple_spinner_item, Province);

// 设置下拉列表的样式,下为设置为简单样式

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// 将数据载入进下拉列表其中

provinceSpinner.setAdapter(adapter);

// 加入事件Spinner事件监听,当点击下拉列表中的某一选项之后触发该事件

provinceSpinner

.setOnItemSelectedListener(new SpinnerSelectedListener());

// 设置默认值

provinceSpinner.setVisibility(View.VISIBLE);

} catch (Exception e) {

e.printStackTrace();

}

break;

// 市

case 2:

try {

JSONArray array = new JSONArray(json2);

City = new String[array.length()];

CityCode = new String[array.length()];

for (int i = 0; i < array.length(); i++) {

JSONObject obj = (JSONObject) array.get(i);

City[i] = obj.getString("name");

CityCode[i] = obj.getString("code");

}

citySpinner = (Spinner) findViewById(R.id.spinner_city);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(

MainActivity.this,

android.R.layout.simple_spinner_item, City);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

citySpinner.setAdapter(adapter);

citySpinner.setOnItemSelectedListener(new SpinLisSHi());

citySpinner.setVisibility(View.VISIBLE);

} catch (JSONException e) {

e.printStackTrace();

}

break;

// 县

case 3:

try {

JSONArray array = new JSONArray(json3);

Country = new String[array.length()];

CountryCode = new String[array.length()];

for (int i = 0; i < array.length(); i++) {

JSONObject obj = (JSONObject) array.get(i);

Country[i] = obj.getString("name");

CountryCode[i] = obj.getString("code");

}

countySpinner = (Spinner) findViewById(R.id.spinner_county);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(

MainActivity.this,

android.R.layout.simple_spinner_item, Country);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

countySpinner.setAdapter(adapter);

countySpinner.setOnItemSelectedListener(new SpinLisXian());

countySpinner.setVisibility(View.VISIBLE);





} catch (JSONException e) {

e.printStackTrace();

}

break;





default:

break;

}

super.handleMessage(msg);

}

};





class SpinnerSelectedListener implements OnItemSelectedListener {





public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

Toast.makeText(MainActivity.this, Province[arg2], 3000).show();

// 下载市的名称

loadCitys2(ProvinceCode[arg2]);

}





public void onNothingSelected(AdapterView<?

> arg0) {

}

}





// 市

class SpinLisSHi implements OnItemSelectedListener {





public void onItemSelected(AdapterView<?

> arg0, View arg1, int arg2,

long arg3) {

Toast.makeText(MainActivity.this, City[arg2], 3000).show();

// 下载县的名称

loadCitys3(CityCode[arg2]);

}





public void onNothingSelected(AdapterView<?

> arg0) {

}

}





// 县

class SpinLisXian implements OnItemSelectedListener {





public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

Toast.makeText(MainActivity.this,

Country[arg2] + CountryCode[arg2], 3000).show();

}





public void onNothingSelected(AdapterView<?> arg0) {

}

}

}

2、httpService.java

package com.loveplusplus.loader.demo.util;





import java.util.ArrayList;

import java.util.List;





import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;





/**

 * 2014年7月20日 16:26:40 这里是解析url的;

 * 

 * @author YJBo

 */

public class HttpService {





public static void main(String[] args) {

}







public static String postParamAndFileOB(String url) {

// http地址

String httpUrl = url;

System.out.println("此时的OB地址httpUrl++==" + httpUrl);

System.out

.println("--------------数据库正在链接中····----------------------------");

try {

// HttpGet连接对象

HttpPost httpRequest = new HttpPost(httpUrl);

System.out.println("==wo走到这里了 20===");





System.out.println("==wo走到这里了 21===");

// 使用NameValuePair来保存要传递的Post參数

List<NameValuePair> params = new ArrayList<NameValuePair>();

// 设置字符集

HttpEntity httpentity = new UrlEncodedFormEntity(params, "UTF-8");

// 请求httpRequest

httpRequest.setEntity(httpentity);

// 取得HttpClient对象

HttpClient httpclient = new DefaultHttpClient();

// 请求HttpClient。取得HttpResponse

HttpResponse httpResponse = httpclient.execute(httpRequest);

System.out.println("==wo走到这里了 23===");

// 请求成功

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

// 取得返回的字符串

System.out.println("==wo走到这里了 24===");

String strResultOB = EntityUtils.toString(httpResponse

.getEntity());

// .getEntity();

System.out.println("==wo走到这里了 22===" + strResultOB);

return strResultOB;

} else {

System.out.println("数据请求失败====");

}





} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

}

3.activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context=".ui.MainActivity" >





    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_margin="10dp"

        android:orientation="vertical" >





        <TextView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_gravity="center"

            android:layout_margin="5dp"

            android:text="@string/select_province"

            android:textSize="20sp" />





        <ImageView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:background="@drawable/separator_line"

            android:contentDescription="@string/app_name" />





        <Spinner

            android:id="@+id/spinner_province"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_margin="5dp"/>

    </LinearLayout>





    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_margin="10dp"

        android:orientation="vertical" >





        <TextView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_gravity="center"

            android:layout_margin="5dp"

            android:text="@string/select_city"

            android:textSize="20sp" />





        <ImageView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:background="@drawable/separator_line"

            android:contentDescription="@string/app_name" />





        <Spinner

            android:id="@+id/spinner_city"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_margin="5dp" />

    </LinearLayout>





    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_margin="10dp"

        android:orientation="vertical" >





        <TextView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_gravity="center"

            android:layout_margin="5dp"

            android:text="@string/select_county"

            android:textSize="20sp" />





        <ImageView

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:background="@drawable/separator_line"

            android:contentDescription="@string/app_name" />





        <Spinner

            android:id="@+id/spinner_county"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_margin="5dp" />

    </LinearLayout>





</LinearLayout>

android:省市县三级联动(基于json和spring)的更多相关文章

  1. Android 省市县 三级联动(android-wheel的使用)[转]

    转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为 ...

  2. Android 省市县 三级联动(android-wheel的使用)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...

  3. 省市县三级联动(jqurey+json)

    1.效果图 2.联动js /** * jquery.choosearea.js - 地区联动封装 */ ; (function ($) { var choosearea = function (opt ...

  4. 将省市县三级联动的json数据,转化为element-ui能用的格式,并使用

    var options=[]; var cities = { '北京': { '北京': ['东城区', '西城区', '崇文区', '宣武区', '朝阳区', '丰台区', '石景山区', '海淀区 ...

  5. wex5 实战 省市县三级联动与地址薄同步

    无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2:  地址薄选项,利用inputSel ...

  6. php仿经典省市县三级联动

    之前有个需求要写个类似省市县三级联动的页面,于是,网上找了点资料看了下,其实原理很简单: 当我们选择一级栏目中某条记录的时候,会获取该栏目的vaule值,并发起ajax请求,后台根据这个vaule值, ...

  7. 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框

    JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP  mysql数据库  SpringMvc  ajax   Controller层  Service层  中国地区  省 ...

  8. jQuery - 全国省市县三级联动

    最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...

  9. 省市县三级联动 sql语句

    发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...

随机推荐

  1. wifi钓鱼之--Pumpkin

    无线钓鱼   前言:请准备一块rt3070的外接网卡 Pumpkin是一款无线安全检测工具WiFi-Pumpkin的使用,利用该工具可以伪造接入点完成中间人攻击,同时也支持一些其它的无线渗透功能.旨在 ...

  2. 获取minist数据并转换成lmdb

    caffe本身是没有数据集的,但在data目录下有获取数据的一些脚本.MNIST,一个经典的手写数字库,包含60000个训练样本和10000个测试样本,每个样本为28*28大小的黑白图片,手写数字为0 ...

  3. Perl语言入门:第七章习题:输出文件中包含一个大写字母的所有行,不输出一行的内容全是大写的

    文件内容: bash-2.03$ cat file_4_ex_ch7.txt anonymous attribute demolition grammar rules indices refernce ...

  4. 启动myeclipse弹窗Please allow Subclipse team to receive anonymous usage statistics for this Eclipse intance

    Please allow Subclipse team to receive anonymous usage statistics for this Eclipse intance(翻译:请允许Sub ...

  5. linux 批量修改文件名 文件名只保留部分,去掉部分

    问题:linux系统中文件名包含中文,导致页面访问不了文件.就是上条博客中的解决方法二遗留问题. 文件名中有以下格式:TC2_诺而达铜管(中山)有限公司.pdf ,要改为TC2.pdf,去掉中文部分 ...

  6. MySQL-----唯一索引

    唯一索引: 单列唯一索引和联合唯一索引 索引是为了加速查找. 唯一索引是加了约束条件.例如主外键. 唯一索引的约束: 约束不能重复(可以为空) 主键不能重复(不能为空) 加速查找 create tab ...

  7. rbac组件之菜单操作(三)

    菜单包括菜单列表,菜单列表不仅将菜单列出来,而且将每个菜单下的权限也列出来.菜单的添加.删除.修改. urls.py ... re_path(r'^menus/list/$', MenuView.as ...

  8. Codeforce 810C Do you want a date?

    题意: 给定n个不重复的数, 求出这些数的所有子集, 然后设一个数Ni 为 第i个子集中,最大的数 - 最小的数. 然后将i个 Ni求和, 结果mod 1e9 + 7. 分析: 首先将n个数排列,生成 ...

  9. CSDN编写技巧--CSDN中高亮显示代码

    1, 最近在编写CSDN博客的时候,有种生不如死的感觉,就是如下的现象: 除了图中圈红圈的部分,还有就是背景色是灰色,并且,关键字不高亮显示,起始正常的情况下,也会有这块区域的最上边这行. 2, 有一 ...

  10. 从PDF复制到word(换行问题)

    当我们从pdf文档中复制一部分内容到word的时候,pdf的自动换行会自动给文字添加换行,也就是一个回车,让文字另起一行,这样粘贴到word中的时候,word中也会有很多换行符,排版比较麻烦,需要一个 ...