Android 中实现省市区的联动,在收货地址选择中用到

本文介绍了如何在Android应用中实现省市区的联动选择功能。首先解析XML文件获取省的数据,利用Pull解析器并在START_TAG中初始化和添加数据。接着,创建三个Spinner分别代表省、市、区,并设置监听器,根据省、市的选择动态更新区的显示。详细代码位于项目的res-〉raw文件夹内。
摘要由CSDN通过智能技术生成

实现省市区的联动有两步:

0:第一步解析XML文件得到省的列表,当然了之前还需要创建省,市,区的实体类

使用Pull解析的时候,在START_TAG里面进行初始化,在END_TAG里面进行添加和重新赋值为null,
还有要注意的是最底层的节点<d> 在END_TAG里面是获取不到的,需要在START_TAG里面来进行添加和重新复制为null

1:第二步添加3个Spinner,代表省,市,区,然后实现通过省的选择控制市的显示,然后通过市的选择控制区的显示。就是给省,市添加setOnItemSelectedListener的监听方法,然后在回调中更新spinner 的数据,然后更新显示。


代码:Android 中省市区的联动


xml文件在代码里面的res-〉raw 文件夹里面

主体的代码:

package tech.androidstudio.provincecitydistrictdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Properties;

import tech.androidstudio.provincecitydistrictdemo.entity.City;
import tech.androidstudio.provincecitydistrictdemo.entity.District;
import tech.androidstudio.provincecitydistrictdemo.entity.Province;

public class MainActivity extends AppCompatActivity implements  AdapterView.OnItemSelectedListener {

    Spinner province_spinner;
    Spinner city_spinner;
    Spinner district_spinner;

    ArrayList<String> province_list;
    ArrayList<String> city_list;
    ArrayList<String> district_list;
    private ArrayList<Province> mProvinceList;
    private ArrayAdapter<String> province_adapter;
    private ArrayAdapter<String> city_adapter;
    private ArrayAdapter<String> district_adapter;

    //下面的两个参数用来标记选择的是哪一个省和城市,其实可以不用cityNumber    private int provinceNumber;
//    private int cityNumber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            mProvinceList = getList();
            Log.d("Kodulf", "list " + mProvinceLis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值