Spinner三级联动,解析JSON省 市 区,超简单一步搞定
来源:互联网 发布:巨人网络股票代码 编辑:程序博客网 时间:2024/05/21 17:42
package com.example.hitman.three_leveldemo;import android.content.res.Resources;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Spinner;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;public class MainActivity extends AppCompatActivity { private Spinner province_spinner; private Spinner city_spinner; private Spinner county_spinner; //省市区 private List<String> shengji = new ArrayList<>(); private List<String> chengshi = new ArrayList<>(); private List<String> quyu = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); info(); } private void info() { province_spinner = (Spinner) this.findViewById(R.id.province_spinner); city_spinner = (Spinner) this.findViewById(R.id.city_spinner); county_spinner = (Spinner) this.findViewById(R.id.county_spinner); //======================================================================== Resources resources = getResources(); String[] province = resources.getStringArray(R.array.province_item); shengji = Arrays.asList(province); ArrayAdapter<String> adapterProvince = new ArrayAdapter<String>(MainActivity.this, R.layout.item_spinner, R.id.putxt, shengji); province_spinner.setAdapter(adapterProvince); //======================================================================== //循环省级 province_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { loadSpinner(); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } //解析json public void loadSpinner(){ try { InputStreamReader isr = new InputStreamReader(getAssets().open("china.json"),"UTF-8"); BufferedReader br = new BufferedReader(isr); String line; StringBuilder builder = new StringBuilder(); while((line = br.readLine()) != null){ builder.append(line); } br.close(); isr.close(); JSONObject json = new JSONObject(builder.toString());//builder读取了JSON中的数据。 String selectedItem = (String) province_spinner.getSelectedItem(); JSONArray jsonArray = json.getJSONArray(selectedItem); chengshi.clear(); for (int i=0;i<jsonArray.length();i++){ final JSONObject jsonObject = jsonArray.getJSONObject(i); for (Iterator<String> iterator = jsonObject.keys(); iterator.hasNext();) { String key = iterator.next(); chengshi.add(key); } ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.item_spinner, R.id.putxt,chengshi); city_spinner.setAdapter(adapter); city_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { quyu.clear(); String chensg = (String) city_spinner.getSelectedItem();// System.out.println("城市"); try { JSONArray jsonObject1 = jsonObject.getJSONArray(chensg); for (int f=0;f<jsonObject1.length();f++){ String o = (String) jsonObject1.get(f);// System.out.println("区"+o); quyu.add(o); } } catch (JSONException e) { e.printStackTrace(); } ArrayAdapter<String> adapters = new ArrayAdapter<String>(MainActivity.this,R.layout.item_spinner, R.id.putxt,quyu); county_spinner.setAdapter(adapters); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } } catch (Exception e) { e.printStackTrace(); } }}//----------------XML activity_main.xml<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.hitman.three_leveldemo.MainActivity"> <LinearLayout android:layout_marginLeft="21dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="50dip" android:id="@+id/linearLayout5"> <Spinner android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_width="0dip" android:layout_weight="1" android:layout_height="50dip" android:id="@+id/province_spinner"> </Spinner> <Spinner android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_width="0dip" android:layout_height="50dip" android:id="@+id/city_spinner" android:layout_weight="1"> </Spinner> <Spinner android:paddingTop="0dip" android:paddingBottom="0dip" android:layout_width="0dip" android:layout_height="50dip" android:id="@+id/county_spinner" android:layout_weight="1"> </Spinner> </LinearLayout></RelativeLayout>//---Spinner样式xml item_spinner.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <!--样式为了好看自己可以随便改--><TextView android:layout_width="match_parent" android:layout_height="40sp" android:gravity="center" android:text=" " android:id="@+id/putxt" /> <TextView android:layout_width="300sp" android:layout_height="1sp" android:background="@color/colorPrimaryDark" android:layout_below="@+id/putxt" android:layout_centerHorizontal="true" /></RelativeLayout>//---json放在assets下
阅读全文
1 0
- Spinner三级联动,解析JSON省 市 区,超简单一步搞定
- Spinner+sqlite 三级联动
- Spinner的三级联动
- Spinner实现三级联动
- 三级联动 省 市 区 三级联动可赋值
- 省 市 区 三级联动
- 简单实用ssm+json+ajax三级联动
- android 中spinner 三级联动
- 省市区三级联动之-------spinner
- UIPickerView实现省 市 区三级联动
- knockout 省、市、区三级联动
- thinkphp实现省,市,区三级联动
- json+jquery 三级联动
- 省市区三级联动json
- spinner联动,解析xml
- 不操作数据库,js解析json三级联动
- 不操作数据库,js解析json三级联动
- 使用json数据实现简单的三级联动
- 文件字节流与字符流
- android studio + NDK + JNI
- android停止一秒钟
- Md5加密
- 社会实践调研报告-关于大学生网络生活的调研报告
- Spinner三级联动,解析JSON省 市 区,超简单一步搞定
- 三个数比较大小
- 文件上传与下载Demo
- fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
- javaee 是什么,如何获取各种规范jar包,各种规范的实现的jar包
- Java编程热门问题总结——基础语法篇
- crontab表达式执行时间计算,crontab在线测试
- Android中View的相关知识(4)
- JAVA--网络编程