diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dfec0f6..8015017 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,8 @@ android:supportsRtl="true" android:theme="@style/AppTheme" tools:ignore="LockedOrientationActivity"> + + mAreaList1; + private List mAreaList2; + private List mAreaList3; + private List mAreaList4; + private List mAreaList5; + private OptionsPickerView mArea1Picker; + private OptionsPickerView mArea2Picker; + private OptionsPickerView mArea3Picker; + private OptionsPickerView mArea4Picker; + private OptionsPickerView mArea5Picker; + + private Unbinder mBind; + + @Override + protected int setLayoutId() { + return R.layout.activity_bind_user_info; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + refreshView(STATE_LOAD_SUCCESS); + mTvBaseTitle.setText("绑定信息"); + mTvArea1.setOnClickListener(v -> showArea1Sel()); + mTvArea2.setOnClickListener(v -> showArea2Sel()); + mTvArea3.setOnClickListener(v -> showArea3Sel()); + mTvArea4.setOnClickListener(v -> showArea4Sel()); + mTvArea5.setOnClickListener(v -> showArea5Sel()); + mBtnSave.setOnClickListener(v -> doBindInfo()); + + } + + /** + * 进行个人信息绑定 + */ + private void doBindInfo() { + + } + + private void getAreaList(String id, int type) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "加载中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(HomeApi.class) + .getAreaListByPid("0") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull List areaListBeans) { + + } + + @Override + public void onError(@NonNull Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 一级区域 + */ + private void showArea1Sel() { + hideSoftKeyboard(); + if (null == mAreaList1 || mAreaList1.size() <= 0) { + getAreaList("0", 0); + } else { + mArea1Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + AreaListBean bean = mAreaList1.get(options1); + mTvArea1.setText(bean.getAreaName()); + mSelArea1 = bean.getAreaId(); + + mTvArea2.setText(""); + mSelArea2 = ""; + mAreaList2 = null; + + mTvArea3.setText(""); + mSelArea3 = ""; + mAreaList3 = null; + + mTvArea4.setText(""); + mSelArea4 = ""; + mAreaList4 = null; + + mTvArea5.setText(""); + mSelArea5 = ""; + mAreaList5 = null; + }) + .setTitleText("请选择") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea1Picker.setPicker(mAreaList1); + mArea1Picker.show(); + } + } + + /** + * 二级区域 + */ + private void showArea2Sel() { + hideSoftKeyboard(); + if (null == mAreaList2 || mAreaList2.size() <= 0) { + getAreaList("0", 0); + } else { + mArea2Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + AreaListBean bean = mAreaList2.get(options1); + mTvArea2.setText(bean.getAreaName()); + mSelArea2 = bean.getAreaId(); + + mTvArea3.setText(""); + mSelArea3 = ""; + mAreaList3 = null; + + mTvArea4.setText(""); + mSelArea4 = ""; + mAreaList4 = null; + + mTvArea5.setText(""); + mSelArea5 = ""; + mAreaList5 = null; + + }) + .setTitleText("请选择") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea2Picker.setPicker(mAreaList2); + mArea2Picker.show(); + } + } + + /** + * 三级区域 + */ + private void showArea3Sel() { + hideSoftKeyboard(); + if (null == mAreaList3 || mAreaList3.size() <= 0) { + getAreaList("0", 0); + } else { + mArea3Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + AreaListBean bean = mAreaList3.get(options1); + mTvArea3.setText(bean.getAreaName()); + mSelArea3 = bean.getAreaId(); + + mTvArea4.setText(""); + mSelArea4 = ""; + mAreaList4 = null; + + mTvArea5.setText(""); + mSelArea5 = ""; + mAreaList5 = null; + + }) + .setTitleText("请选择") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea3Picker.setPicker(mAreaList3); + mArea3Picker.show(); + } + } + + /** + * 四级区域 + */ + private void showArea4Sel() { + hideSoftKeyboard(); + if (null == mAreaList4 || mAreaList4.size() <= 0) { + getAreaList("0", 0); + } else { + mArea4Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + AreaListBean bean = mAreaList4.get(options1); + mTvArea4.setText(bean.getAreaName()); + mSelArea4 = bean.getAreaId(); + + mTvArea5.setText(""); + mSelArea5 = ""; + mAreaList5 = null; + }) + .setTitleText("请选择") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea4Picker.setPicker(mAreaList4); + mArea4Picker.show(); + } + } + + /** + * 五级区域 + */ + private void showArea5Sel() { + hideSoftKeyboard(); + if (null == mAreaList5 || mAreaList5.size() <= 0) { + getAreaList("0", 0); + } else { + mArea5Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + AreaListBean bean = mAreaList5.get(options1); + mTvArea5.setText(bean.getAreaName()); + mSelArea5 = bean.getAreaId(); + + }) + .setTitleText("请选择") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea5Picker.setPicker(mAreaList5); + mArea5Picker.show(); + } + } + + /** + * 校验参数合法性 + * + * @return + */ + private boolean checkParams() { + String idCard = mEtIDCard.getText().toString().trim(); + if (TextUtils.isEmpty(idCard) || !RegexUtils.isIDNumber(idCard)) { + ToastUtils.showShort("请输入合法的身份证号码"); + return false; + } + if (TextUtils.isEmpty(mSelArea1)) { + ToastUtils.showShort("请选择省份"); + return false; + } + if (TextUtils.isEmpty(mSelArea2)) { + ToastUtils.showShort("请选择城市"); + return false; + } + if (TextUtils.isEmpty(mSelArea3)) { + ToastUtils.showShort("请选择区、县"); + return false; + } + String areaDetail = mEtAreaDetail.getText().toString().trim(); + if (TextUtils.isEmpty(areaDetail)) { + ToastUtils.showShort("请输入详细地址"); + return false; + } + return true; + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mBind != null) { + mBind.unbind(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tengshisoft/course/activitys/LoginActivity.java b/app/src/main/java/com/tengshisoft/course/activitys/LoginActivity.java index 3f2e372..43c0a79 100644 --- a/app/src/main/java/com/tengshisoft/course/activitys/LoginActivity.java +++ b/app/src/main/java/com/tengshisoft/course/activitys/LoginActivity.java @@ -10,6 +10,7 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; +import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; @@ -57,6 +58,8 @@ public class LoginActivity extends BaseActivity { Button mBtnLogin; @BindView(R2.id.iv_show_pwd) ImageView mIvShowPwd; + @BindView(R2.id.tv_register) + TextView mTvRegister; private Unbinder mBind; private boolean isShowPwd = false; private Disposable mD1; @@ -87,6 +90,7 @@ public class LoginActivity extends BaseActivity { mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } }); + mTvRegister.setOnClickListener(v -> ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_REGISTER).navigation()); } diff --git a/app/src/main/java/com/tengshisoft/course/activitys/MainActivity.java b/app/src/main/java/com/tengshisoft/course/activitys/MainActivity.java index a2a6e39..7a31fd2 100644 --- a/app/src/main/java/com/tengshisoft/course/activitys/MainActivity.java +++ b/app/src/main/java/com/tengshisoft/course/activitys/MainActivity.java @@ -19,6 +19,7 @@ import com.sucstepsoft.cm_utils.core.retrofit_net.api.BaseApiService; import com.sucstepsoft.cm_utils.core.retrofit_net.bean.VersionBean; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.core.widget.base.FragmentUtils; +import com.sucstepsoft.cm_utils.core.widget.views.CenterDialogFuncView; import com.sucstepsoft.cm_utils.core.widget.views.CenterDialogUpdateView; import com.sucstepsoft.cm_utils.utils.LogUtils; import com.sucstepsoft.cm_utils.utils.ToastUtils; @@ -153,6 +154,32 @@ public class MainActivity extends BaseActivity { checkAppVersion(); } + /** + * 没有填写个人信息的Dialog + */ + private void showHintInfoDialog() { + CenterDialogFuncView.DialogBuilder builder = new CenterDialogFuncView.DialogBuilder(mActivity); + CenterDialogFuncView build = builder.build(); + build.addOnChoseListener(new CenterDialogFuncView.OnChoseListener() { + @Override + public void shareWeChart() { + + } + + @Override + public void shareWeibo() { + + } + + @Override + public void shareQQ() { + ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_BIND_USER_INFO).navigation(); + } + }); + build.show(); + + } + /** * App版本校验 */ diff --git a/app/src/main/java/com/tengshisoft/course/activitys/RegisterActivity.java b/app/src/main/java/com/tengshisoft/course/activitys/RegisterActivity.java new file mode 100644 index 0000000..bdeb6f8 --- /dev/null +++ b/app/src/main/java/com/tengshisoft/course/activitys/RegisterActivity.java @@ -0,0 +1,302 @@ +package com.tengshisoft.course.activitys; + +import android.annotation.SuppressLint; +import android.app.ProgressDialog; +import android.text.Editable; +import android.text.Selection; +import android.text.TextUtils; +import android.text.method.HideReturnsTransformationMethod; +import android.text.method.PasswordTransformationMethod; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.google.gson.Gson; +import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.constant.RegexConstants; +import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean; +import com.sucstepsoft.cm_utils.core.beans.UserRegisterPostBean; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; +import com.sucstepsoft.cm_utils.core.retrofit_net.api.BaseApiService; +import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView; +import com.sucstepsoft.cm_utils.utils.EncryptUtils; +import com.sucstepsoft.cm_utils.utils.ExceptionHandler; +import com.sucstepsoft.cm_utils.utils.RegexUtils; +import com.sucstepsoft.cm_utils.utils.ToastUtils; +import com.sucstepsoft.cm_utils.utils.UIUtil; +import com.tengshisoft.course.R; +import com.tengshisoft.course.R2; + +import java.util.concurrent.TimeUnit; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; +import io.reactivex.Observable; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import okhttp3.RequestBody; + +/** + * 注册页 + */ +@Route(path = PathConfig.PATH_MODULE_MAIN_REGISTER) +public class RegisterActivity extends BaseActivity { + + + @BindView(R2.id.et_phone) + EditText mEtPhone; + @BindView(R2.id.et_verify_code) + EditText mEtVerifyCode; + @BindView(R2.id.btn_verify_code) + Button mBtnVerifyCode; + @BindView(R2.id.et_pwd) + EditText mEtPwd; + @BindView(R2.id.iv_show_pwd) + ImageView mIvShowPwd; + @BindView(R2.id.et_confirm_pwd) + EditText mEtConfirmPwd; + @BindView(R2.id.iv_confirm_show_pwd) + ImageView mIvConfirmShowPwd; + @BindView(R2.id.btn_do_register) + TextView mBtnDoRegister; + private Unbinder mBind; + private boolean isShowPwd; + private boolean isShowConfirmPwd; + private int mCountDownNum = 120;//倒计时秒 + private Disposable mCountDownDis; + + @Override + public void initData() { + super.initData(); + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("注册"); + refreshView(STATE_LOAD_SUCCESS); + mIvShowPwd.setOnClickListener(v -> { + Editable etext = mEtPwd.getText(); + Selection.setSelection(etext, etext.length()); + if (isShowPwd) { + isShowPwd = false; + mEtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance()); + mIvShowPwd.setBackgroundResource(R.drawable.ic_hide_pwd); + } else { + isShowPwd = true; + mIvShowPwd.setBackgroundResource(R.drawable.ic_show_pwd); + mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); + } + }); + mIvConfirmShowPwd.setOnClickListener(v -> { + Editable etext = mEtConfirmPwd.getText(); + Selection.setSelection(etext, etext.length()); + if (isShowConfirmPwd) { + isShowConfirmPwd = false; + mEtConfirmPwd.setTransformationMethod(PasswordTransformationMethod.getInstance()); + mIvConfirmShowPwd.setBackgroundResource(R.drawable.ic_hide_pwd); + } else { + isShowConfirmPwd = true; + mIvConfirmShowPwd.setBackgroundResource(R.drawable.ic_show_pwd); + mEtConfirmPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); + } + }); + mBtnVerifyCode.setOnClickListener(v -> getVerifyCode()); + setEditTextInputSpeChar(mEtPwd); + setEditTextInputSpeChar(mEtConfirmPwd); + mBtnDoRegister.setOnClickListener(v -> doRegister()); + } + + /** + * 验证码倒计时 + */ + @SuppressLint("CheckResult") + private void countDown() { + Observable.interval(0, 1, TimeUnit.SECONDS).take(mCountDownNum) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + mCountDownDis = d; + } + + @Override + public void onNext(Long aLong) { + long l = mCountDownNum - aLong; + if (l == 1) { + mBtnVerifyCode.setEnabled(true); + mBtnVerifyCode.setText("重新获取"); + } else { + mBtnVerifyCode.setEnabled(false); + mBtnVerifyCode.setText(l + "s后重新获取"); + } + } + + @Override + public void onError(Throwable e) { + ExceptionHandler.handleException(e); + mBtnVerifyCode.setEnabled(true); + mBtnVerifyCode.setText("重新获取"); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 进行注册 + */ + private void doRegister() { + if (checkAllParams()) { + String phone = mEtPhone.getText().toString().trim(); + String code = mEtVerifyCode.getText().toString().trim(); + String pwd = mEtPwd.getText().toString().trim(); + ProgressDialog dialog = UIUtil.initDialog(mActivity, "注册中..."); + dialog.show(); + UserRegisterPostBean info = new UserRegisterPostBean(); + String md5Pwd = EncryptUtils.encryptMD5ToStringTimes(pwd, 3); + info.setPassword(md5Pwd); + info.setPhone(phone); + info.setVerificationCode(code); + Gson gson = new Gson(); + String obj = gson.toJson(info); + RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), obj); + RetrofitManager.getInstance() + .create(BaseApiService.class) + .doRegisterUser(body) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(BaseSuccessBean baseSuccessBean) { + ToastUtils.showShort("注册成功"); + dialog.dismiss(); + finish(); + } + + @Override + public void onError(Throwable e) { + ExceptionHandler.handleException(e); + dialog.dismiss(); + } + + @Override + public void onComplete() { + + } + }); + } + } + + /** + * 校验参数 + * + * @return + */ + private boolean checkAllParams() { + String phone = mEtPhone.getText().toString().trim(); + if (TextUtils.isEmpty(phone) || !RegexUtils.isMobileExact(phone)) { + ToastUtils.showShort("请输入合法的手机号码"); + return false; + } + String code = mEtVerifyCode.getText().toString().trim(); + if (TextUtils.isEmpty(code)) { + ToastUtils.showShort("请输入验证码"); + return false; + } + String pwd = mEtPwd.getText().toString().trim(); + if (TextUtils.isEmpty(pwd) || !RegexUtils.isMatch(RegexConstants.REGEX_PWD, pwd)) { + ToastUtils.showShort("密码最少为6位且包含数字和字母"); + return false; + } + String confirmpwd = mEtConfirmPwd.getText().toString().trim(); + if (TextUtils.isEmpty(confirmpwd)) { + ToastUtils.showShort("请输入确认密码"); + return false; + } + if (!confirmpwd.equals(pwd)) { + ToastUtils.showShort("密码与确认密码不符"); + return false; + } + return true; + } + + private boolean checkPhone() { + String phone = mEtPhone.getText().toString().trim(); + if (TextUtils.isEmpty(phone) || !RegexUtils.isMobileExact(phone)) { + ToastUtils.showShort("请输入合法的手机号码"); + return false; + } + return true; + } + + /** + * 获取验证码 + */ + private void getVerifyCode() { + if (checkPhone()) { + String phone = mEtPhone.getText().toString().trim(); + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + mBtnVerifyCode.setEnabled(false); + RetrofitManager.getInstance() + .create(BaseApiService.class) + .getVerifyCodeBean(phone) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(BaseSuccessBean baseSuccessBean) { + dialog.dismiss(); + ToastUtils.showShort("获取成功"); + countDown(); + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + mBtnVerifyCode.setEnabled(true); + mBtnVerifyCode.setText("重新获取"); + } + + @Override + public void onComplete() { + + } + }); + } + } + + @Override + protected int setLayoutId() { + return R.layout.activity_register; + } + + @Override + protected void onDestroy() { + if (mCountDownDis != null && !mCountDownDis.isDisposed()) { + mCountDownDis.dispose(); + } + if (mBind != null) { + mBind.unbind(); + } + super.onDestroy(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tengshisoft/course/modules/AreaListBean.java b/app/src/main/java/com/tengshisoft/course/modules/AreaListBean.java new file mode 100644 index 0000000..4c9e846 --- /dev/null +++ b/app/src/main/java/com/tengshisoft/course/modules/AreaListBean.java @@ -0,0 +1,204 @@ +package com.tengshisoft.course.modules; + +import com.contrarywind.interfaces.IPickerViewData; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/7/21 - 10:49 AM + * 邮箱: itgaojian@163.com + * 描述: + */ +public class AreaListBean implements IPickerViewData { + + /** + * areaCityCode : string + * areaCode : string + * areaFirst : string + * areaId : string + * areaLat : string + * areaLevel : string + * areaLng : string + * areaMergerName : string + * areaName : string + * areaParentId : string + * areaParentName : string + * areaPinyin : string + * areaShortName : string + * areaZipCode : string + * parent : true + * subArea : [{}] + */ + + private String areaCityCode; + private String areaCode; + private String areaFirst; + private String areaId; + private String areaLat; + private String areaLevel; + private String areaLng; + private String areaMergerName; + private String areaName; + private String areaParentId; + private String areaParentName; + private String areaPinyin; + private String areaShortName; + private String areaZipCode; + private boolean parent; + private boolean checkEd; + + @Override + public String toString() { + return "AreaListBean{" + + "areaName='" + areaName + '\'' + + ", checkEd=" + checkEd + + '}'; + } + + public boolean isCheckEd() { + return checkEd; + } + + public void setCheckEd(boolean checkEd) { + this.checkEd = checkEd; + } + + private List subArea; + + public String getAreaCityCode() { + return areaCityCode; + } + + public void setAreaCityCode(String areaCityCode) { + this.areaCityCode = areaCityCode; + } + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } + + public String getAreaFirst() { + return areaFirst; + } + + public void setAreaFirst(String areaFirst) { + this.areaFirst = areaFirst; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getAreaLat() { + return areaLat; + } + + public void setAreaLat(String areaLat) { + this.areaLat = areaLat; + } + + public String getAreaLevel() { + return areaLevel; + } + + public void setAreaLevel(String areaLevel) { + this.areaLevel = areaLevel; + } + + public String getAreaLng() { + return areaLng; + } + + public void setAreaLng(String areaLng) { + this.areaLng = areaLng; + } + + public String getAreaMergerName() { + return areaMergerName; + } + + public void setAreaMergerName(String areaMergerName) { + this.areaMergerName = areaMergerName; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } + + public String getAreaParentId() { + return areaParentId; + } + + public void setAreaParentId(String areaParentId) { + this.areaParentId = areaParentId; + } + + public String getAreaParentName() { + return areaParentName; + } + + public void setAreaParentName(String areaParentName) { + this.areaParentName = areaParentName; + } + + public String getAreaPinyin() { + return areaPinyin; + } + + public void setAreaPinyin(String areaPinyin) { + this.areaPinyin = areaPinyin; + } + + public String getAreaShortName() { + return areaShortName; + } + + public void setAreaShortName(String areaShortName) { + this.areaShortName = areaShortName; + } + + public String getAreaZipCode() { + return areaZipCode; + } + + public void setAreaZipCode(String areaZipCode) { + this.areaZipCode = areaZipCode; + } + + public boolean isParent() { + return parent; + } + + public void setParent(boolean parent) { + this.parent = parent; + } + + public List getSubArea() { + return subArea; + } + + public void setSubArea(List subArea) { + this.subArea = subArea; + } + + @Override + public String getPickerViewText() { + return this.areaName; + } + + public static class SubAreaBean { + } +} diff --git a/app/src/main/java/com/tengshisoft/course/net/HomeApi.java b/app/src/main/java/com/tengshisoft/course/net/HomeApi.java index 060c1f3..99daa49 100644 --- a/app/src/main/java/com/tengshisoft/course/net/HomeApi.java +++ b/app/src/main/java/com/tengshisoft/course/net/HomeApi.java @@ -4,6 +4,7 @@ import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean; import com.sucstepsoft.cm_utils.core.beans.BaseUserBean; import com.sucstepsoft.cm_utils.core.beans.UserLoginBean; import com.sucstepsoft.cm_utils.core.retrofit_net.bean.VersionBean; +import com.tengshisoft.course.modules.AreaListBean; import com.tengshisoft.course.modules.CourseBean; import com.tengshisoft.course.modules.CourseDetailBean; import com.tengshisoft.course.modules.ErrorAnalyzeBean; @@ -163,4 +164,14 @@ public interface HomeApi { @Headers({"base_url_name:study", "Content-Type:application/json", "Accept:application/json"}) @GET("app/question/getquestionbyid/{questionId}") Observable getQuestionLibDetail(@Path("questionId") String id, @Header("token") String token); + + /** + * 统一用户-获取区域 + * + * @param pId + * @return + */ + @Headers({"Content-Type:application/json", "Accept:application/json"}) + @GET("app/dataarea/listareabyparentidrelease/{areaParentId}") + Observable> getAreaListByPid(@Path("areaParentId") String pId); } diff --git a/app/src/main/res/drawable-xhdpi/ic_start_hint.png b/app/src/main/res/drawable-xhdpi/ic_start_hint.png new file mode 100755 index 0000000..43a96e8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_start_hint.png differ diff --git a/app/src/main/res/drawable/sel_register_btn_verify_bg.xml b/app/src/main/res/drawable/sel_register_btn_verify_bg.xml new file mode 100644 index 0000000..66308ab --- /dev/null +++ b/app/src/main/res/drawable/sel_register_btn_verify_bg.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_bind_user_info.xml b/app/src/main/res/layout/activity_bind_user_info.xml new file mode 100644 index 0000000..e6917dd --- /dev/null +++ b/app/src/main/res/layout/activity_bind_user_info.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +