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下

原创粉丝点击