一、请看效果图“:

二、程序的代码:

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. MySQL(MMM架构使用)

    本案例要求基于普通版的MySQL服务器改造MMM架构,完成以下任务操作:启动MMM集群架构设置集群中服务器为online状态MySQL-MMM架构部署完成后需要启动,数据库端启动mmm-agent进程 ...

  2. mysql.connector.errors.IntegrityError: 1048 (23000): Column 'request_url' cannot be null

    箭头指向的2的方向 少了一个request_url的值 调试: 直接 执行sql语句 是没问题的, 这样就知道问题是出在代码的逻辑 处理了: INSERT INTO response_time (nu ...

  3. 【计算机网络】2.5 DNS:因特网的目录服务

    第二章第五节 因特网的目录服务 DNS(域名系统)提供了一种能运行主机名到IP地址转换的因特网目录服务:一方面,他让人能够记住如taobao.com这样的主机别名:另一方面,他提供给路由器可理解的IP ...

  4. react-native 0.58版本打包图片问题 task ':app:mergeReleaseResources' Error: Duplicate resources

    debug没问题,在生成正式apk的时候就如下: google了一下在github上找到了解决方案: github问题指向 在node_modules/react-native/react.gradl ...

  5. 怎样提高DB2存储过程性能

    高性能的SQL过程是数据库开发人员所追求的,我将不断把学到的,或在实际开发中用到的一些提高SQL过程性能的技巧整理出来,温故而知新. 1,在只使用一条语句即可做到时避免使用多条语句 让我们从一个简单的 ...

  6. 【BZOJ 1202】 [HNOI2005]狡猾的商人(枚举区间也可行)

    题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1202 其实也可以不使用加权并查集,通过画图可以发现,一个长区间和其包含的区间能够算出一个新区间 ...

  7. 集训第五周 动态规划 K题 背包

    K - 背包 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. java程序验证用户名密码和验证码登录的小例子

    package Study02; import java.util.Random; import java.util.Scanner; public class test { static Strin ...

  9. Microsoft Excel 准确按照一页的宽度和高度打印

    设置 Microsoft Excel 准确按照一页的宽度和高度打印 Sheet1. VBA复制  With Worksheets("Sheet1").PageSetup  .Zoo ...

  10. 在docker下面安装Nginx PHP mysql let's encrypt

    最近自己在弄了个Nginx PHP Mysql Let's encrypt的docker,下面记录一下 1)先装 Let's encrypt docker run --rm -p 80:80 -p 4 ...