用到了
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 就是要用的省市区三级联动的东西。一看就明白其他的代码懒得删除了