<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                請尊重他人的勞動成果,轉載請注明出處:[Android開發之解析XML并實現三級聯動效果](http://blog.csdn.net/fengyuzhengfan/article/details/39560427) 本實例主要應用XmlPullParser解析XML文檔中的省市區,然后將數據綁定到Spinner上實現三級聯動的效果。關于XmlPullParser的詳解大家可以參考《[Android開發之使用PULL解析和生成XML](http://blog.csdn.net/fengyuzhengfan/article/details/39560595)》一文。 運行效果圖: ![省市區三級聯動](https://box.kancloud.cn/2016-02-19_56c6aa377f4a5.jpg) ![省市區三級聯動](https://box.kancloud.cn/2016-02-19_56c6aa3791bba.jpg) ![省市區三級聯動](https://box.kancloud.cn/2016-02-19_56c6aa37aa213.jpg) 程序代碼: 核心代碼: ~~~ <pre name="code" class="java">package com.jph.sevice; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.xmlpull.v1.XmlPullParser; import android.os.Handler; import android.os.Message; import android.util.Xml; /** * 解析省、市、區xml * @author jph * Date:2014.09.25 */ public class PullProvince { public static final int PARSESUCCWSS=0x2001; private Handler handler; public PullProvince(Handler handler) { // TODO Auto-generated constructor stub this.handler=handler; } /** * 獲取所有省份城市以及區 * @author jph * Date:2014.09.25 */ public void getProvinces(final InputStream inStream) { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(inStream, "UTF-8"); int event; event = pullParser.getEventType(); Map<String, Map<String, List<String>>> provinces = new HashMap<String, Map<String, List<String>>>();// 省份 Map<String, List<String>> cities=null;// 城市 ArrayList<String> areaAll = null; String pName = "";// 省份名稱 String cName = "";// 城市名稱 String aName = "";// 地區名 String targetName = "";// 當前節點的名稱 while (event != XmlPullParser.END_DOCUMENT) { targetName = pullParser.getName(); switch (event) { case XmlPullParser.START_TAG: if ("province".equals(targetName)) {// 處理省份節點 pName = pullParser.getAttributeValue(0);// 當前省份名 cities=new HashMap<String, List<String>>(); } else if ("city".equals(targetName)) {// 處理城市節點 cName = pullParser.getAttributeValue(0); areaAll = new ArrayList<String>();// 地區 } else if ("area".equals(targetName)) {// 處理地區節點 aName = pullParser.getAttributeValue(0); } break; case XmlPullParser.END_TAG: if (targetName.equals("area")) { areaAll.add(aName); } else if (targetName.equals("city")) { cities.put(cName, areaAll); } else if (targetName.equals("province")) { provinces.put(pName, cities); } break; } event = pullParser.next(); } Message message=new Message(); message.obj=provinces;//將解析出的數據放到message中傳給主線程 message.what=PARSESUCCWSS; handler.sendMessage(message);//通知主線程數據解析完畢 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); } } ~~~ Activity: ~~~ <pre name="code" class="java">package com.jph.px; import java.io.InputStream; import java.util.List; import java.util.Map; import com.jph.sevice.PullProvince; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; 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; /** * 省,市,區三級聯動 * @author jph * Date:2014.09.25 */ public class MainActivity extends Activity { private Spinner province,city,area; private Map<String, Map<String, List<String>>> data=null; /**當前的選擇的省份**/ private String currentProvince; /**當前的選擇的城市**/ private String currentCity; private PullProvince pullProvince; // /**當前的選擇的區**/ // private String currentArea; private Handler mHandler=new Handler(){ @SuppressWarnings("unchecked") @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case PullProvince.PARSESUCCWSS://數據解析完畢,加載數據 data=(Map<String, Map<String, List<String>>>) msg.obj; initData(); break; default: break; } super.handleMessage(msg); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); province=(Spinner)findViewById(R.id.province); city=(Spinner)findViewById(R.id.city); area=(Spinner)findViewById(R.id.area); pullProvince=new PullProvince(mHandler); InputStream inStream = this.getClass().getClassLoader(). getResourceAsStream("province_city.xml"); pullProvince.getProvinces(inStream); } /** * 初始化數據 */ private void initData(){ if (data!=null) { String[]arrStrings= data.keySet().toArray(new String[0]); System.out.println(arrStrings); //將省份信息填充到 province Spinner province.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice,arrStrings)); currentProvince=getCurrentProvince(); bindCityAdapter(currentProvince); currentCity=getCurrentCity(); bindAreaAdapter(currentCity); setOnItemSelectedListener(); } } private void bindAreaAdapter(String currentCity) { // TODO Auto-generated method stub //根據當前顯示的城市將對應的區填充到area Spinner area.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, data.get(currentProvince).get(currentCity))); } private void bindCityAdapter(String currentProvince) { // TODO Auto-generated method stub //根據當前顯示的省份將對應的城市填充到city Spinner city.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice,data. get(currentProvince).keySet().toArray(new String[0]))); } /** * 為Spinner設置監聽器 */ private void setOnItemSelectedListener() { // TODO Auto-generated method stub province.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub currentProvince=getCurrentProvince(); bindCityAdapter(currentProvince); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); city.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub currentCity=getCurrentCity(); bindAreaAdapter(currentCity); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); area.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this,area.getSelectedItem().toString(), Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); } /**獲取當前選擇的省份 * @return String:當前選擇的省份 */ private String getCurrentProvince() { // TODO Auto-generated method stub return province.getSelectedItem().toString(); } /**獲取當前選擇的城市 * @return String:當前選擇的城市 */ private String getCurrentCity() { // TODO Auto-generated method stub return city.getSelectedItem().toString(); } } ~~~ 布局文件: ~~~ <pre name="code" class="html"><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" > <Spinner android:id="@+id/province" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Spinner android:id="@+id/city" android:layout_width="match_parent" android:layout_height="wrap_content"/> <Spinner android:id="@+id/area" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看