省市区三级联动+网络获取省市区数据

用到了

implementation 'com.contrarywind:Android-PickerView:4.1.7'

package org.wzeiri.android.sahar.ui.salary.activity;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;

import org.wzeiri.android.sahar.R;
import org.wzeiri.android.sahar.bean.basicdata.RegionBean;
import org.wzeiri.android.sahar.bean.common.Tuple;
import org.wzeiri.android.sahar.bean.common.Tuple3;
import org.wzeiri.android.sahar.common.ViewHelper;
import org.wzeiri.android.sahar.common.user.UserCache;
import org.wzeiri.android.sahar.network.api.IBasicDataLogic;
import org.wzeiri.android.sahar.network.api.ISalaryLogic;
import org.wzeiri.android.sahar.network.bean.AppBean;
import org.wzeiri.android.sahar.network.bean.AppListBean;
import org.wzeiri.android.sahar.util.EffectiveClick;
import org.wzeiri.android.sahar.view.IosAlertDialog;

import java.util.ArrayList;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cc.lcsunm.android.basicuse.activity.TitleActivity;
import cc.lcsunm.android.basicuse.activity.WhiteTitleActivity;
import cc.lcsunm.android.basicuse.common.OnEventP;
import cc.lcsunm.android.basicuse.network.MsgCallback;
import cc.lcsunm.android.basicuse.util.ToastUtil;
import cc.lcsunm.android.basicuse.widget.ValueTextView;

public class MyComplaintActivity extends WhiteTitleActivity {


    @BindView(R.id.fragment_my_text_name)
    ValueTextView fragmentMyTextName;
    @BindView(R.id.fragment_my_text_cardid)
    ValueTextView fragmentMyTextCardid;
    @BindView(R.id.fragment_my_text_phone)
    ValueTextView fragmentMyTextPhone;
    @BindView(R.id.fragment_my_text_company_type)
    ValueTextView fragmentMyTextCompanyType;
    @BindView(R.id.fragment_my_text_project_address)
    ValueTextView fragmentMyTextProjectAddress;
    @BindView(R.id.fragment_my_text_project_address_des)
    EditText fragmentMyTextProjectAddressDes;
    @BindView(R.id.fragment_my_text_complaint_title)
    TextView fragmentMyTextComplaintTitle;
    @BindView(R.id.fragment_my_text_complaint_des)
    EditText fragmentMyTextComplaintDes;
    @BindView(R.id.send)
    TextView send;
    @BindView(R.id.company_right)
    EditText companyRight;
    @BindView(R.id.company_lin)
    LinearLayout companyLin;
    @BindView(R.id.project_right)
    EditText projectRight;
    @BindView(R.id.project_lin)
    LinearLayout projectLin;
    private EffectiveClick effectiveClick;
    private Tuple3<RegionBean, RegionBean, RegionBean> mRegionData;

    private ArrayList<String> mWayList = new ArrayList<>();
    private IosAlertDialog myDialog;
    private long mCid;
    private long mPid;
    private String mCompanyname;
    private String mProjectname;
    private String mType;
    private int mComplainType;
    private String mSelectaddress;
    private String mProvince = "";
    private String mCity;
    private String mArea;
    private String mNO;
    private int mYear;
    private int mMonth;
    private int mFrom;
    private String mAmt;
    private String mProvincecode;
    private String mCitycode;
    private String mAreacode;

    private boolean isFirstCounty = true;


    private final ArrayList<RegionBean> mRegionList = new ArrayList<>();
    private final ArrayList<RegionBean> mYiXiangRegionList = new ArrayList<>();
    private final ArrayList<String> options1Items = new ArrayList<>();
    private final ArrayList<String> options1YiXiangItems = new ArrayList<>();

    private final ArrayList<ArrayList<String>> options2Items = new ArrayList<>();
    private final ArrayList<ArrayList<String>> options2YiXiangItems = new ArrayList<>();


    private final ArrayList<ArrayList<ArrayList<String>>> options3Items = new ArrayList<>();
    private OptionsPickerView countyOPV;

    private String provinceCode;
    private String cityCode;
    private String countyCode;
    private String provinceName;
    private String cityName;
    private String countyName;
    private int mOptions1;
    private int mOptions2;
    private int mOptions3;


    public static void start(Context context, long cid, long pid, String companyname, String type,
                             String projectname, String selectaddress, String no, int year, int month
            , int from, String amt, String provincecode, String citycode, String areacode) {
        Intent starter = new Intent(context, MyComplaintActivity.class);
        starter.putExtra("cid", cid);
        starter.putExtra("pid", pid);
        starter.putExtra("companyname", companyname);
        starter.putExtra("type", type);
        starter.putExtra("projectname", projectname);
        starter.putExtra("selectaddress", selectaddress);
        starter.putExtra("complaintype", 3);//投诉类型(1投诉,2建议3工资疑义)
        starter.putExtra("no", no);
        starter.putExtra("year", year);
        starter.putExtra("month", month);
        starter.putExtra("from", from);
        starter.putExtra("amt", amt);
        starter.putExtra("provincecode", provincecode);
        starter.putExtra("citycode", citycode);
        starter.putExtra("areacode", areacode);


        context.startActivity(starter);
    }

    public static void start(Context context) {
        Intent starter = new Intent(context, MyComplaintActivity.class);
        starter.putExtra("complaintype", 1);//投诉类型(1投诉,2建议3工资疑义) 目前没有建议
        context.startActivity(starter);
    }

    @Override
    protected void initView() {
        setStatusBarColorResource(R.color.white);
        setActionBarColorResource(R.color.white);
        setAppBarBackgroundColor(R.color.white);
        setBackground(R.color.white);
        setExtendBarHeightWithPx(0);

        mPid = getLongExtra("pid", 0L);
        mCid = getLongExtra("cid", 0L);
        mCompanyname = getStringExtra("companyname");
        mType = getStringExtra("type");
        mComplainType = getIntExtra("complaintype", 0);
        mProjectname = getStringExtra("projectname");
        mSelectaddress = getStringExtra("selectaddress");
        String selectaddress[] = mSelectaddress.split("省");
        if (selectaddress.length > 1) {
            mProvince = selectaddress[0];
        }
        mNO = getStringExtra("no");
        mYear = getIntegerExtra("year", 0);
        mMonth = getIntegerExtra("month", 0);
        mFrom = getIntegerExtra("from", 0);
        mAmt = getStringExtra("amt");
        mProvincecode = getStringExtra("provincecode");
        mCitycode = getStringExtra("citycode");
        mAreacode = getStringExtra("areacode");

        if (mType.equals("")) {
            fragmentMyTextCompanyType.setVisibility(View.GONE);
        } else if (mType.equals("0")) {
            fragmentMyTextCompanyType.setVisibility(View.GONE);
        } else {
            fragmentMyTextCompanyType.setVisibility(View.GONE);
            fragmentMyTextCompanyType.setText(mType);
        }
        companyRight.setText(mCompanyname);
        projectRight.setText(mProjectname);

        effectiveClick = EffectiveClick.create();
        mWayList.add("住建行业");
        mWayList.add("交通行业");
        mWayList.add("水利行业");
        mWayList.add("其他");
        fragmentMyTextName.setText(UserCache.getLoginInfo().getReal_name());
        fragmentMyTextCardid.setText(UserCache.getLoginInfo().getId_card_no());
        fragmentMyTextPhone.setText(UserCache.getLoginInfo().getMobilephone());
        fragmentMyTextProjectAddress.setText(mSelectaddress);

    }

    @Override
    protected void initData() {

    }

    @Override
    protected int getLayoutId() {
        return R.layout.fragment_m_complaint;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // TODO: add setContentView(...) invocation
        ButterKnife.bind(this);
    }

    @OnClick(R.id.fragment_my_text_company_type)
    void onClickUserInfo() {
        if (effectiveClick.isRedundantClick()) {
            return;
        }
        chooseWay();
    }

    @OnClick(R.id.fragment_my_text_project_address)
    void onClickAddress() {
        if (effectiveClick.isRedundantClick()) {
            return;
        }
        if (isFirstCounty) {
            getCountyAndShow();
            isFirstCounty = false;
        } else
            countyOPV.show();

    }

    @OnClick(R.id.send)
    void onClickSend() {
        if (effectiveClick.isRedundantClick()) {
            return;
        }
        sendAllPost();
    }

    private void sendAllPost() {
        if (companyRight.getText().toString().trim().equals("")) {
            ToastUtil.showShortToast("请输入企业名称");
            return;
        }
        if (fragmentMyTextProjectAddress.getText().toString().trim().equals("")) {
            ToastUtil.showShortToast("请选择项目地址");
            return;
        }
//        if (fragmentMyTextCompanyType.getText().toString().trim().equals("")) {
            ToastUtil.showShortToast("请选择行业类型");
            return;
        }
        if (projectRight.getText().toString().trim().equals("")) {
            ToastUtil.showShortToast("请输入项目名称");
            return;
        }
        if (fragmentMyTextProjectAddressDes.getText().toString().trim().equals("")) {
            ToastUtil.showShortToast("请输入项目详细地址");
            return;
        }
        if (fragmentMyTextComplaintDes.getText().toString().trim().equals("")) {
            ToastUtil.showShortToast("请输入投诉内容");
            return;
        }
        if (mComplainType == 3) {
            //工资投诉
            getLogic(ISalaryLogic.class)
                    // id:投诉ID(新增为0);batchNo:工资单批次号;underMonth(int) 年;  underYear(int):月;pid: 项目ID; cid:企业ID;remark:疑问内容;
                                projectName:项目名称;companyName:企业名称;provinceName:省份名称;provinceCode:省份编码;cityName:市区名称;
                                cityCode:市区编码;areaName:乡镇名称;areaCode:乡镇编码;address:地址;dataSource(int):来源;money(decimal):薪资;
                    .moneycomplaintAdd(0, mNO, mYear, mMonth, mPid, mCid, fragmentMyTextComplaintDes.getText().toString(),
                            projectRight.getText().toString(), companyRight.getText().toString(), mProvince, mProvincecode, mCity, mCitycode, mArea, mAreacode,
                            fragmentMyTextProjectAddressDes.getText().toString(), mFrom, mAmt)
                    .enqueue(new MsgCallback<AppBean<String>>(getThis()) {
                        @Override
                        public void onSuccess(AppBean<String> bean) {
                            if (bean.getData() != null) {
                                ToastUtil.showShortToast("投诉成功");
                            } else {
                                ToastUtil.showShortToast("投诉失败,请重新投诉");
                            }
                            finish();

                        }
                    });
        } else {
            //其余投诉
            getLogic(ISalaryLogic.class)
                    .complaintAdd(companyRight.getText().toString(), fragmentMyTextCompanyType.getText().toString(),
                            fragmentMyTextProjectAddressDes.getText().toString(), projectRight.getText().toString(),
                            fragmentMyTextProjectAddressDes.getText().toString(), mCid, mPid, mProvince, mCity, mArea, mComplainType, mNO, mYear, mMonth)
                    .enqueue(new MsgCallback<AppBean<String>>(getThis()) {
                        @Override
                        public void onSuccess(AppBean<String> bean) {
                            if (bean.getData() != null) {
                                ToastUtil.showShortToast(bean.getData());
                            } else {
                                ToastUtil.showShortToast("投诉失败,请重新投诉");
                            }
                            finish();

                        }
                    });
        }

    }

    private void chooseWay() {
        OptionsPickerView pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3, View v) {
                //返回的分别是三个级别的选中位置
                String s = mWayList.get(options1);
                fragmentMyTextCompanyType.setText(s);
            }
        })
                .setTitleText("请选择")//标题
                .setDecorView((ViewGroup) this.getWindow().getDecorView().findViewById(android.R.id.content))
                .setSubCalSize(20)//确定和取消文字大小
                .setSubmitColor(getResources().getColor(R.color.my_blue))//确定按钮文字颜色
                .setCancelColor(getResources().getColor(R.color.my_blue))//取消按钮文字颜色
                .setTextColorCenter(Color.BLACK)//设置选中项的颜色
                .build();

        pvOptions.setPicker(mWayList);
        pvOptions.show();
    }


    private void getCountyAndShow() {
        showProgressDialog();
        getLogic(IBasicDataLogic.class)
                .getAllRegion()
                .enqueue(new MsgCallback<AppListBean<RegionBean>>(this) {
                    @Override
                    public void onSuccess(AppListBean<RegionBean> bean) {
                        mRegionList.clear();
                        mRegionList.addAll(bean.getData());//获取区域
                        countyOPVCreate();
                        closeProgressDialog();
                        countyOPV.show();
                    }
                });

    }

    @SuppressLint("SetTextI18n")
    private void countyOPVCreate() {
        countyOPV = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> {
//                //返回的分别是三个级别的选中位置
            provinceCode = mRegionList.get(options1).getCode();
            cityCode = mRegionList.get(options1).getCityList().get(options2).getCode();
            countyCode = mRegionList.get(options1).getCityList().get(options2).getCountyList().get(options3).getCode();
            provinceName = mRegionList.get(options1).getName();
            cityName = mRegionList.get(options1).getCityList().get(options2).getName();
            countyName = mRegionList.get(options1).getCityList().get(options2).getCountyList().get(options3).getName();
            mOptions1 = options1;
            mOptions2 = options2;
            mOptions3 = options3;
            mProvince = provinceName;
            mCity = cityName;
            mArea = countyName;
            mProvincecode = provinceCode;
            mCitycode = cityCode;
            mAreacode = countyCode;
            fragmentMyTextProjectAddress.setText(provinceName + " " + cityName + " " + countyName);
        })
                .setTitleText("区域选择")//标题
                .setDecorView(this.getWindow().getDecorView().findViewById(android.R.id.content))
                .setSubCalSize(20)//确定和取消文字大小
                .setSubmitColor(getResources().getColor(R.color.my_blue))//确定按钮文字颜色
                .setCancelColor(getResources().getColor(R.color.my_blue))//取消按钮文字颜色
                .setTextColorCenter(Color.BLACK)//设置选中项的颜色
                .build();

        for (int i = 0; i < mRegionList.size(); i++) {
            options1Items.add(mRegionList.get(i).getName());
            ArrayList<String> cityList = new ArrayList<>();//该省的城市列表(第二级)
            ArrayList<ArrayList<String>> countList = new ArrayList<>();//该省的所有地区列表(第三级)
            if (mRegionList.get(i).getCityList() == null || mRegionList.get(i).getCityList().size() == 0) {
                cityList.add("");
                ArrayList<String> countyListChild = new ArrayList<>();
                countyListChild.add("");
                countList.add(countyListChild);
            } else {
                for (int j = 0; j < mRegionList.get(i).getCityList().size(); j++) {
                    String cityName = mRegionList.get(i).getCityList().get(j).getName();
                    cityList.add(cityName);
                    ArrayList<String> countyListChild = new ArrayList<>();
                    if (mRegionList.get(i).getCityList().get(j).getCountyList() == null
                            || mRegionList.get(i).getCityList().get(j).getCountyList().size() == 0) {
                        countyListChild.add("");
                    } else {
                        for (int k = 0; k < mRegionList.get(i).getCityList().get(j).getCountyList().size(); k++) {
                            String countyName = mRegionList.get(i).getCityList().get(j).getCountyList().get(k).getName();
                            countyListChild.add(countyName);
                        }
                    }
                    countList.add(countyListChild);
                }
            }
            options2Items.add(cityList);
            options3Items.add(countList);
        }
        countyOPV.setPicker(options1Items, options2Items, options3Items);
        countyOPV.setSelectOptions(mOptions1, mOptions2, mOptions3);
    }
}

countyOPV 就是要用的省市区三级联动的东西。一看就明白其他的代码懒得删除了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值