From 6ab7a40a633e19c138678483b4bb9c4c624eaf17 Mon Sep 17 00:00:00 2001 From: itgaojian163 Date: Tue, 21 Jul 2020 13:17:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=8C=BA=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../res/drawable/shape_search_input_box.xml | 5 +- modulemain/build.gradle | 2 + .../activitys/base/ChooseCityActivity.java | 288 +++++++++++++++++- .../cultural/adapter/AreaListAdapter.java | 37 +++ .../cultural/beans/AreaListBean.java | 19 ++ .../cultural/holder/AreaHolder.java | 24 ++ .../mudulemain/cultural/net/HomeApi.java | 5 + .../src/main/res/drawable/sel_line_ra_3.xml | 6 + .../res/drawable/shape_gray_line_ra_2.xml | 8 + .../main/res/drawable/shape_red_line_ra_2.xml | 8 + .../main/res/layout/activity_choose_city.xml | 278 +++++++++++++++++ .../src/main/res/layout/item_area_layout.xml | 21 ++ 12 files changed, 696 insertions(+), 5 deletions(-) create mode 100644 modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/AreaListAdapter.java create mode 100644 modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/AreaListBean.java create mode 100644 modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/holder/AreaHolder.java create mode 100644 modulemain/src/main/res/drawable/sel_line_ra_3.xml create mode 100644 modulemain/src/main/res/drawable/shape_gray_line_ra_2.xml create mode 100644 modulemain/src/main/res/drawable/shape_red_line_ra_2.xml create mode 100644 modulemain/src/main/res/layout/item_area_layout.xml diff --git a/cm_utils/src/main/res/drawable/shape_search_input_box.xml b/cm_utils/src/main/res/drawable/shape_search_input_box.xml index 4d2a79c..ca94e1d 100644 --- a/cm_utils/src/main/res/drawable/shape_search_input_box.xml +++ b/cm_utils/src/main/res/drawable/shape_search_input_box.xml @@ -1,6 +1,9 @@ - + + \ No newline at end of file diff --git a/modulemain/build.gradle b/modulemain/build.gradle index be5e6ea..2e5ba8d 100644 --- a/modulemain/build.gradle +++ b/modulemain/build.gradle @@ -57,6 +57,8 @@ dependencies { implementation "com.scwang.smartrefresh:SmartRefreshLayout:${rootProject.ext.gSmartRefreshLayoutVersion}" //角标 implementation 'q.rorbin:badgeview:1.1.3' + //流布局 + implementation 'com.beloo.widget:ChipsLayoutManager:0.3.7@aar' //Rxjava implementation "io.reactivex.rxjava2:rxjava:${rootProject.ext.gRxJavaVersion}" implementation "io.reactivex.rxjava2:rxandroid:${rootProject.ext.gRxAndroid}" diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/ChooseCityActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/ChooseCityActivity.java index 5fa774a..4347696 100644 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/ChooseCityActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/ChooseCityActivity.java @@ -1,27 +1,305 @@ package com.tengshisoft.mudulemain.cultural.activitys.base; -import androidx.appcompat.app.AppCompatActivity; -import butterknife.ButterKnife; -import butterknife.Unbinder; - +import android.app.ProgressDialog; +import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Route; +import com.beloo.widget.chipslayoutmanager.ChipsLayoutManager; import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView; +import com.sucstepsoft.cm_utils.utils.ToastUtils; +import com.sucstepsoft.cm_utils.utils.UIUtil; +import com.sucstepsoft.cm_utils.utils.UserLgUtils; import com.tengshisoft.mudulemain.R; +import com.tengshisoft.mudulemain.R2; +import com.tengshisoft.mudulemain.cultural.adapter.AreaListAdapter; +import com.tengshisoft.mudulemain.cultural.beans.AreaListBean; +import com.tengshisoft.mudulemain.cultural.net.HomeApi; + +import java.util.ArrayList; +import java.util.List; + +import androidx.core.widget.NestedScrollView; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; @Route(path = PathConfig.PATH_MODULE_MAIN_CHOOSE_CITY) public class ChooseCityActivity extends BaseActivity { + @BindView(R2.id.tv_search) + TypeFaceTextView mTvSearch; + @BindView(R2.id.tv_current_area) + TextView mTvCurrentArea; + @BindView(R2.id.rlv_area_1_content) + RecyclerView mRlvArea1Content; + @BindView(R2.id.tv_area_1_hint) + TextView mTvArea1Hint; + @BindView(R2.id.rlv_area_2_content) + RecyclerView mRlvArea2Content; + @BindView(R2.id.tv_area_2_hint) + TextView mTvArea2Hint; + @BindView(R2.id.rlv_area_3_content) + RecyclerView mRlvArea3Content; + @BindView(R2.id.tv_area_3_hint) + TextView mTvArea3Hint; + @BindView(R2.id.rlv_area_4_content) + RecyclerView mRlvArea4Content; + @BindView(R2.id.tv_area_4_hint) + TextView mTvArea4Hint; + @BindView(R2.id.nsv_content) + NestedScrollView mNsvContent; private Unbinder mBind; + private String mCurrentCityName = ""; + private String mCurrentCityCode = ""; + private AreaListAdapter mArea1Adapter; + private AreaListAdapter mArea2Adapter; + private AreaListAdapter mArea3Adapter; + private AreaListAdapter mArea4Adapter; + private List mArea1List; + private List mArea2List; + private List mArea3List; + private List mArea4List; @Override public void initData() { mBind = ButterKnife.bind(this); mTvBaseTitle.setText("地区选择"); + mTvPublish.setVisibility(View.VISIBLE); + mTvPublish.setText("确定"); + mTvCurrentArea.setText(mCurrentCityName); + mTvPublish.setOnClickListener(v -> doChooseArea()); + mCurrentCityName = UserLgUtils.getCurrentCity(); + mTvCurrentArea.setText(mCurrentCityName); + mCurrentCityCode = UserLgUtils.getCurrentCityCode(); refreshView(STATE_LOAD_SUCCESS); + ChipsLayoutManager area1Manager = ChipsLayoutManager.newBuilder(mActivity) + .setOrientation(ChipsLayoutManager.HORIZONTAL) + .build(); + ChipsLayoutManager area2Manager = ChipsLayoutManager.newBuilder(mActivity) + .setOrientation(ChipsLayoutManager.HORIZONTAL) + .build(); + ChipsLayoutManager area3Manager = ChipsLayoutManager.newBuilder(mActivity) + .setOrientation(ChipsLayoutManager.HORIZONTAL) + .build(); + ChipsLayoutManager area4Manager = ChipsLayoutManager.newBuilder(mActivity) + .setOrientation(ChipsLayoutManager.HORIZONTAL) + .build(); + mArea1List = new ArrayList<>(); + mArea2List = new ArrayList<>(); + mArea3List = new ArrayList<>(); + mArea4List = new ArrayList<>(); + mRlvArea1Content.setLayoutManager(area1Manager); + mRlvArea2Content.setLayoutManager(area2Manager); + mRlvArea3Content.setLayoutManager(area3Manager); + mRlvArea4Content.setLayoutManager(area4Manager); + + mArea1Adapter = new AreaListAdapter(mActivity, mArea1List); + mArea2Adapter = new AreaListAdapter(mActivity, mArea2List); + mArea3Adapter = new AreaListAdapter(mActivity, mArea3List); + mArea4Adapter = new AreaListAdapter(mActivity, mArea4List); + + mRlvArea1Content.setAdapter(mArea1Adapter); + mRlvArea2Content.setAdapter(mArea2Adapter); + mRlvArea3Content.setAdapter(mArea3Adapter); + mRlvArea4Content.setAdapter(mArea4Adapter); + + mArea1Adapter.addOnItemClickListener(areaListBean -> { + getArea2List(""); + }); + mArea2Adapter.addOnItemClickListener(areaListBean -> { + getArea3List(""); + }); + mArea3Adapter.addOnItemClickListener(areaListBean -> { + getArea4List(""); + }); + mArea4Adapter.addOnItemClickListener(areaListBean -> { + //TODO 进行选择 + }); + + } + + private void getArea1List() { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "加载中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(HomeApi.class) + .getAreaListByPid("") + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(AreaListBean areaListBean) { + dialog.dismiss(); + mArea2List.clear(); + mArea2Adapter.setData(mArea2List); + mTvArea2Hint.setVisibility(View.VISIBLE); + mTvArea2Hint.setText("请选择"); + + mArea3List.clear(); + mArea3Adapter.setData(mArea2List); + mTvArea3Hint.setVisibility(View.VISIBLE); + mTvArea3Hint.setText("请选择"); + + mArea4List.clear(); + mArea4Adapter.setData(mArea2List); + mTvArea4Hint.setVisibility(View.VISIBLE); + mTvArea4Hint.setText("请选择"); + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + } + + @Override + public void onComplete() { + + } + }); + } + + private void getArea2List(String id) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "加载中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(HomeApi.class) + .getAreaListByPid(id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(AreaListBean areaListBean) { + dialog.dismiss(); + mArea3List.clear(); + mArea3Adapter.setData(mArea2List); + mTvArea3Hint.setVisibility(View.VISIBLE); + mTvArea3Hint.setText("请选择"); + + mArea4List.clear(); + mArea4Adapter.setData(mArea2List); + mTvArea4Hint.setVisibility(View.VISIBLE); + mTvArea4Hint.setText("请选择"); + + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + } + + @Override + public void onComplete() { + + } + }); + } + + private void getArea3List(String id) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "加载中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(HomeApi.class) + .getAreaListByPid(id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(AreaListBean areaListBean) { + dialog.dismiss(); + mArea4List.clear(); + mArea4Adapter.setData(mArea2List); + mTvArea4Hint.setVisibility(View.VISIBLE); + mTvArea4Hint.setText("请选择"); + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + } + + @Override + public void onComplete() { + + } + }); + } + + private void getArea4List(String id) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "加载中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(HomeApi.class) + .getAreaListByPid(id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(AreaListBean areaListBean) { + dialog.dismiss(); + mArea4List = new ArrayList<>(); + mArea4Adapter.setData(mArea4List); + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 确定选择 + */ + private void doChooseArea() { + if (TextUtils.isEmpty(mCurrentCityCode)) { + ToastUtils.showShort("请选择地区"); + } else { + Intent intent = new Intent(); + intent.putExtra("chooseCity", mCurrentCityName); + intent.putExtra("chooseCityCode", mCurrentCityCode); + setResult(333, intent); + finish(); + } } @Override @@ -36,4 +314,6 @@ public class ChooseCityActivity extends BaseActivity { protected int setLayoutId() { return R.layout.activity_choose_city; } + + } diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/AreaListAdapter.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/AreaListAdapter.java new file mode 100644 index 0000000..58f7565 --- /dev/null +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/adapter/AreaListAdapter.java @@ -0,0 +1,37 @@ +package com.tengshisoft.mudulemain.cultural.adapter; + +import android.content.Context; +import android.text.Layout; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.tengshisoft.mudulemain.R; +import com.tengshisoft.mudulemain.cultural.beans.AreaListBean; +import com.tengshisoft.mudulemain.cultural.holder.AreaHolder; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/7/21 - 10:56 AM + * 邮箱: itgaojian@163.com + * 描述: + */ +public class AreaListAdapter extends BaseRecyclerAdapter { + public AreaListAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public AreaHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_area_layout, parent, false); + return new AreaHolder(itemView); + } + + @Override + public void bindHolder(AreaHolder areaHolder, int i) { + + } +} diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/AreaListBean.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/AreaListBean.java new file mode 100644 index 0000000..fb6901a --- /dev/null +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/beans/AreaListBean.java @@ -0,0 +1,19 @@ +package com.tengshisoft.mudulemain.cultural.beans; + +/** + * 作者: adam + * 日期: 2020/7/21 - 10:49 AM + * 邮箱: itgaojian@163.com + * 描述: + */ +public class AreaListBean { + private boolean checkEd; + + public boolean isCheckEd() { + return checkEd; + } + + public void setCheckEd(boolean checkEd) { + this.checkEd = checkEd; + } +} diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/holder/AreaHolder.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/holder/AreaHolder.java new file mode 100644 index 0000000..e1a6723 --- /dev/null +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/holder/AreaHolder.java @@ -0,0 +1,24 @@ +package com.tengshisoft.mudulemain.cultural.holder; + +import android.view.View; +import android.widget.TextView; + +import com.tengshisoft.mudulemain.R; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +/** + * 作者: adam + * 日期: 2020/7/21 - 10:56 AM + * 邮箱: itgaojian@163.com + * 描述: + */ +public class AreaHolder extends RecyclerView.ViewHolder { + public TextView mTvName; + + public AreaHolder(@NonNull View itemView) { + super(itemView); + mTvName = itemView.findViewById(R.id.tv_name); + } +} diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java index 894a0a6..3f26b50 100644 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/net/HomeApi.java @@ -5,6 +5,7 @@ import com.tengshisoft.moduleactivity.beans.ActivityListBeans; import com.tengshisoft.modulecultural.bean.CulturalLiveBean; import com.tengshisoft.modulecultural.bean.LegacyListBean; import com.tengshisoft.moduleplace.beans.PlaceListBean; +import com.tengshisoft.mudulemain.cultural.beans.AreaListBean; import com.tengshisoft.mudulemain.cultural.beans.BaseUserBean; import com.tengshisoft.mudulemain.cultural.beans.CommentListBean; import com.tengshisoft.mudulemain.cultural.beans.NewsItemBean; @@ -236,4 +237,8 @@ public interface HomeApi { @Headers({"base_url_name:live", "Content-Type:application/json", "Accept:application/json"}) @GET("app/liveplan/listpageliveplanrelease") Observable getLiveRecord(@Query("page") String page, @Query("rows") String rows); + + @Headers({"Content-Type:application/json", "Accept:application/json"}) + @GET("app/liveplan/listpageliveplanrelease") + Observable getAreaListByPid(@Query("parentId") String pId); } diff --git a/modulemain/src/main/res/drawable/sel_line_ra_3.xml b/modulemain/src/main/res/drawable/sel_line_ra_3.xml new file mode 100644 index 0000000..888704f --- /dev/null +++ b/modulemain/src/main/res/drawable/sel_line_ra_3.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/modulemain/src/main/res/drawable/shape_gray_line_ra_2.xml b/modulemain/src/main/res/drawable/shape_gray_line_ra_2.xml new file mode 100644 index 0000000..a79d893 --- /dev/null +++ b/modulemain/src/main/res/drawable/shape_gray_line_ra_2.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/modulemain/src/main/res/drawable/shape_red_line_ra_2.xml b/modulemain/src/main/res/drawable/shape_red_line_ra_2.xml new file mode 100644 index 0000000..79037c0 --- /dev/null +++ b/modulemain/src/main/res/drawable/shape_red_line_ra_2.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/modulemain/src/main/res/layout/activity_choose_city.xml b/modulemain/src/main/res/layout/activity_choose_city.xml index 914a824..b64ac0e 100644 --- a/modulemain/src/main/res/layout/activity_choose_city.xml +++ b/modulemain/src/main/res/layout/activity_choose_city.xml @@ -4,6 +4,284 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white" + android:orientation="vertical" tools:context=".cultural.activitys.base.ChooseCityActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modulemain/src/main/res/layout/item_area_layout.xml b/modulemain/src/main/res/layout/item_area_layout.xml new file mode 100644 index 0000000..1bfc1dc --- /dev/null +++ b/modulemain/src/main/res/layout/item_area_layout.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file