From 6c729c094353cd71f24b20638b3f7a5e00a58b09 Mon Sep 17 00:00:00 2001 From: itgaojian163 Date: Tue, 20 Dec 2022 17:57:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tengshisoft/BaseMyApplication.java | 2 +- cm_utils/build.gradle | 2 +- .../cm_utils/constant/PathConfig.java | 89 +++++--- .../core/retrofit_net/BaseUrlApi.java | 8 +- .../conver/BaseUrlInterceptor.java | 2 + .../core/widget/base/BaseFragment.java | 17 +- .../core/widget/base/BaseRecyclerAdapter.java | 19 +- .../core/widget/base/FragmentUtils.java | 20 +- cm_utils/src/main/res/values/attrs.xml | 2 + cm_utils/src/main/res/values/colors.xml | 2 + cm_utils/src/main/res/values/dimens.xml | 1 + cm_utils/src/main/res/values/styles.xml | 2 + .../cultural/activitys/base/MainActivity.java | 40 ++-- .../cultural/fragment/HomeFragment.java | 2 +- modulemain/src/main/res/menu/bottom.xml | 8 +- .../moduleshop/adapter/ShopSortAdapter.java | 32 +++ .../moduleshop/adapter/ShopSortExAdapter.java | 103 +++++++++ .../adapter/ShopSortOneAdapter.java | 51 +++++ .../adapter/ShopSortSecondAdapter.java | 62 ++++++ .../moduleshop/beans/ShopListBean.java | 199 ++++++++++++++++++ .../moduleshop/beans/ShopSortListBean.java | 156 ++++++++++++++ .../fragments/ShopSortFragment.java | 152 +++++++++++++ .../moduleshop/holder/ShopSortHolder.java | 21 ++ .../moduleshop/holder/ShopSortOneHolder.java | 21 ++ .../holder/ShopSortSecondHolder.java | 23 ++ .../tenlionsoft/moduleshop/net/ShopApi.java | 46 ++++ .../drawable-xhdpi/ic_catelog_indic_line.png | Bin 0 -> 168 bytes .../main/res/layout/fragment_shop_sort.xml | 54 +++++ .../main/res/layout/item_child_shop_sort.xml | 19 ++ .../main/res/layout/item_group_shop_sort.xml | 25 +++ .../main/res/layout/item_second_shop_sort.xml | 68 ++++++ .../main/res/layout/item_third_shop_sort.xml | 25 +++ 32 files changed, 1197 insertions(+), 76 deletions(-) create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortAdapter.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortExAdapter.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortOneAdapter.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortSecondAdapter.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopListBean.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopSortListBean.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/fragments/ShopSortFragment.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortHolder.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortOneHolder.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortSecondHolder.java create mode 100644 moduleshop/src/main/java/com/tenlionsoft/moduleshop/net/ShopApi.java create mode 100644 moduleshop/src/main/res/drawable-xhdpi/ic_catelog_indic_line.png create mode 100644 moduleshop/src/main/res/layout/fragment_shop_sort.xml create mode 100644 moduleshop/src/main/res/layout/item_child_shop_sort.xml create mode 100644 moduleshop/src/main/res/layout/item_group_shop_sort.xml create mode 100644 moduleshop/src/main/res/layout/item_second_shop_sort.xml create mode 100644 moduleshop/src/main/res/layout/item_third_shop_sort.xml diff --git a/app/src/main/java/com/tengshisoft/BaseMyApplication.java b/app/src/main/java/com/tengshisoft/BaseMyApplication.java index 9686e64..23fdc53 100755 --- a/app/src/main/java/com/tengshisoft/BaseMyApplication.java +++ b/app/src/main/java/com/tengshisoft/BaseMyApplication.java @@ -38,7 +38,7 @@ public class BaseMyApplication extends Application { public void onCreate() { super.onCreate(); MultiDex.install(this); -// ARouter.openDebug(); + ARouter.openDebug(); MagicScreenAdapter.initDesignWidthInDp(1024, true); ARouter.init(BaseMyApplication.this); initShare(); diff --git a/cm_utils/build.gradle b/cm_utils/build.gradle index 86f18f1..76ec12d 100755 --- a/cm_utils/build.gradle +++ b/cm_utils/build.gradle @@ -63,7 +63,7 @@ dependencies { annotationProcessor "com.github.bumptech.glide:compiler:${rootProject.ext.supportGlide}" //butterknife api "com.jakewharton:butterknife:$rootProject.ext.gButterKnifeVersion" - ////选择器 + ////选择器 implementation "com.contrarywind:Android-PickerView:${rootProject.ext.pickerViewVersion}" implementation "com.contrarywind:wheelview:${rootProject.ext.wheelVersion}" //recyclerview diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/constant/PathConfig.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/constant/PathConfig.java index 1722bdd..f406330 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/constant/PathConfig.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/constant/PathConfig.java @@ -60,7 +60,8 @@ public class PathConfig { public static final String DID_CITY_CODE = "640675";//日喀则市编码 //新闻类型 - public static final int NEWS_TYPE_MULTI_PIC = 2332;//key_1 三图; key_2 一图左;key_3 一图右;key_4 一图下;key_5 纯文字;key_6 视频;key_7 音频; + public static final int NEWS_TYPE_MULTI_PIC = 2332;//key_1 三图; key_2 一图左;key_3 一图右;key_4 一图下;key_5 纯文字;key_6 视频; + // key_7 音频; public static final int NEWS_TYPE_SINGLE_PIC_LEFT = 2333;//一图左 public static final int NEWS_TYPE_SINGLE_PIC_RIGHT = 2334;//一图右 public static final int NEWS_TYPE_SINGLE_PIC_BOTTOM = 2335;//一图下 @@ -78,9 +79,14 @@ public class PathConfig { // N员:bc405346-8714-4ded-89ac-9cc4d755f66a // 巡检:25affe67-134c-4a32-ba41-64b0cfedc782 public static final int PATROL_SECTOR_INDEX = 3;//巡更点NFC使用的扇区 - public static final String CATCH_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME + File.separator + "cache" + File.separator; - public static final String VIDEO_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME + File.separator + "videoCache" + File.separator; - public static final String PROJECT_CATCH_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME;//项目缓存目录 + public static final String CATCH_PATH = + Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME + File.separator + + "cache" + File.separator; + public static final String VIDEO_PATH = + Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME + File.separator + + "videoCache" + File.separator; + public static final String PROJECT_CATCH_PATH = + Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME;//项目缓存目录 public static final String IDENTITY_FILE = VIDEO_PATH + "identity.txt"; /** * ====================================主模块=================================== @@ -111,7 +117,8 @@ public class PathConfig { public static final String PATH_MODULE_PLACE_ACTIVITY_PLACEDETAIL = "/moduleplace/activity/placedetail";//场馆详情 public static final String PATH_MODULE_PLACE_ACTIVITY_PLACELIST = "/moduleplace/activity/placelist";//场馆列表 public static final String PATH_MODULE_PLACE_FRAGMENT_MAIN = "/moduleplace/fragment/main";//场馆fragment - public static final String PATH_MODULE_PLACE_ACTIVITY_PLACE_SUBJECT_DETAIL = "/moduleplace/activity/subjectdetail";//场馆详情 + public static final String PATH_MODULE_PLACE_ACTIVITY_PLACE_SUBJECT_DETAIL = "/moduleplace/activity/subjectdetail" + ;//场馆详情 public static final String PATH_MODULE_PLACE_TICKET_DISTINE = "/moduleplace/activity/distineticket";//门票预定 public static final String PATH_MODULE_PLACE_DISTINE_BOOKING = "/moduleplace/activity/distinebooking";//场次预定 @@ -122,40 +129,63 @@ public class PathConfig { public static final String PATH_MODULE_CULTURAL_FRAGMENT_MAIN = "/modulecultural/fragment/main";//文化主页fragment public static final String PATH_MODULE_CULTURAL_ACTIVITY_LEGACY = "/modulecultural/activity/legacy";//非遗数据库 public static final String PATH_MODULE_CULTURAL_ACTIVITY_LEGACY_DETAIL = "/modulecultural/activity/legacy/detail"; - public static final String PATH_MODULE_CULTURAL_VOUNTEER_PUBLISH = "/modulecultural/activity/vounteerpublish";//发布自愿者活动 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_REGISTER_SINGLE = "/modulecultural/activity/vounteerregistersingle";//注册志愿者 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_REGISTER_TEAM = "/modulecultural/activity/vounteerregisterteam";//注册志愿者团队 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_PUBLISH = "/modulecultural/activity/vounteerpublish"; + //发布自愿者活动 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_REGISTER_SINGLE = "/modulecultural/activity" + + "/vounteerregistersingle";//注册志愿者 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_REGISTER_TEAM = "/modulecultural/activity" + + "/vounteerregisterteam";//注册志愿者团队 public static final String PATH_MODULE_CULTURAL_CHOOSE_MEMBER = "/modulecultural/activity/choosemember";//选择成员 public static final String PATH_MODULE_CULTURAL_VOUNTEER_MAIN = "/modulecultural/activity/vounteermain";//志愿者主页 public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE = "/modulecultural/activity/vounteermanage";//志愿团队 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_LIST = "/modulecultural/activity/vounteermanagelsit";//我创建的自愿者团队 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_TEAM = "/modulecultural/activity/vounteermember";//志愿者列表 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_MEMBER_DETAIL = "/modulecultural/activity/vounteermemberdetail";//志愿者详情 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_MEMBER = "/modulecultural/activity/vounteermemberedit";//审批团队成员 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_LIST = "/modulecultural/activity" + + "/vounteermanagelsit";//我创建的自愿者团队 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_TEAM = "/modulecultural/activity/vounteermember" + ;//志愿者列表 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_MEMBER_DETAIL = "/modulecultural/activity" + + "/vounteermemberdetail";//志愿者详情 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_MEMBER = "/modulecultural/activity" + + "/vounteermemberedit";//审批团队成员 public static final String PATH_MODULE_CULTURAL_VOUNTEER_DEAL = "/modulecultural/activity/registerdeal";//协议 public static final String PATH_MODULE_CULTURAL_LIVE_DETAIL = "/modulecultural/activity/livedetail";//点播直播详情 public static final String PATH_MODULE_CULTURAL_LIVE = "/modulecultural/activity/live";//点播直播 public static final String PATH_MODULE_CULTURAL_LIVE_LOCKBACK = "/modulecultural/activity/livelookback";//直播回看 public static final String PATH_MODULE_CULTURAL_LIVE_LIST = "/modulecultural/activity/livelookbacklist";//直播回看播放列表 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_MINE_TEAM_DETAIL = "/modulecultural/activity/vounteer/detail";//我创建的团队详情 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_MINE_TEAM_EDIT = "/modulecultural/activity/vounteer/edit";//编辑我创建的团队 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_MINE_TEAM_DETAIL = "/modulecultural/activity/vounteer" + + "/detail";//我创建的团队详情 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_MINE_TEAM_EDIT = "/modulecultural/activity/vounteer/edit" + ;//编辑我创建的团队 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_LIST = "/modulecultural/activity/vounteer/activitylist";//志愿者活动列表 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_DETAIL = "/modulecultural/activity/vounteer/activitydetail";//志愿者活动详情 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_TEAM = "/modulecultural/activity/vounteer/actviitysignteam";//志愿活动报名-团队 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_SINGLE = "/modulecultural/activity/vounteer/actviitysignsingle";//志愿活动报名-个人 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_LOG = "/modulecultural/activity/vounteer/actviitylog";//活动日志 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_EDIT = "/modulecultural/activity/vounteer/actviityedit";//修改我发起的活动 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_MINE = "/modulecultural/activity/vounteer/activitymine";//我的志愿活动 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_CHOOSE_TEAM = "/modulecultural/activity/vounteer/activitychooseteam";//活动报名选择我的团队 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_INFO_DETAIL = "/modulecultural/activity/vounteer/infodetail";//志愿者个人信息 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_INFO_EDIT = "/modulecultural/activity/vounteer/infoedit";//自愿者信息修改 - public static final String PATH_MODULE_CULTURAL_VOUNTEER_FRAGMENT_TEAM = "/modulecultural/fragment/vounteerteam";//rlv_teams + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_LIST = "/modulecultural/activity/vounteer" + + "/activitylist";//志愿者活动列表 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_DETAIL = "/modulecultural/activity/vounteer" + + "/activitydetail";//志愿者活动详情 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_TEAM = "/modulecultural/activity" + + "/vounteer/actviitysignteam";//志愿活动报名-团队 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_SINGLE = "/modulecultural/activity" + + "/vounteer/actviitysignsingle";//志愿活动报名-个人 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_LOG = "/modulecultural/activity/vounteer" + + "/actviitylog";//活动日志 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_EDIT = "/modulecultural/activity/vounteer" + + "/actviityedit";//修改我发起的活动 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_MINE = "/modulecultural/activity/vounteer" + + "/activitymine";//我的志愿活动 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_CHOOSE_TEAM = "/modulecultural/activity/vounteer" + + "/activitychooseteam";//活动报名选择我的团队 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_INFO_DETAIL = "/modulecultural/activity/vounteer" + + "/infodetail";//志愿者个人信息 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_INFO_EDIT = + "/modulecultural/activity/vounteer/infoedit";//自愿者信息修改 + public static final String PATH_MODULE_CULTURAL_VOUNTEER_FRAGMENT_TEAM = "/modulecultural/fragment/vounteerteam"; + //rlv_teams public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE = "/modulecultural/activity/sharecultural";//文化分享 - public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_PUBLISH = "/modulecultural/activity/shareculturalpublish";//发布文化分享 - public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_MINE_LIST = "/modulecultural/activity/shareculturalmine";//我的文化分享 - public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_DETAIL = "/modulecultural/activity/shareculturaldetail";//文化分享详情 + public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_PUBLISH = "/modulecultural/activity" + + "/shareculturalpublish";//发布文化分享 + public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_MINE_LIST = "/modulecultural/activity" + + "/shareculturalmine";//我的文化分享 + public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_DETAIL = "/modulecultural/activity" + + "/shareculturaldetail";//文化分享详情 //===========================ModuleMine=========我的========================= public static final String PATH_MODULE_MINE_COLLECT = "/modulemine/activity/collectlist";//我的收藏列表 @@ -230,5 +260,6 @@ public class PathConfig { //====================Player======================= public static final String PATH_MODULE_PLAYER_SIMPLE_VIDEO = "/moduleplayer/activity/simpleplayer";//单纯播放器 - + //====================商城======================= + public static final String PATH_MODULE_SHOP_FRAGMENT_SORT_LIST = "/moduleshop/fragment/shopSortList";//商城分类 } diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java index 8077cac..c0aa769 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/BaseUrlApi.java @@ -11,6 +11,7 @@ public class BaseUrlApi { // public static final String IP = "http://192.168.0.113:7001/usercenter/";/* 测试IP */ public static final String IP = "http://49.233.36.36:58099/xzszwhy/";/* 测试IP */ + public static final String IP_URL = "http://v3.xzszwhy.cn/";/* 测试IP */ // public static final String IP = "https://www.wgink.ink/usercenter/";/* 正式IP */ // public static final String IP = "https://www.xzszwhy.cn/usercenter/";/* 正式IP */ // public static final String BASE_SYSTEM_IP = "http://192.168.0.115:8082/"; @@ -60,6 +61,7 @@ public class BaseUrlApi { public static final String BASE_CULTURAL_SHARE = BASE_SYSTEM_IP;/* 文化分享 */ public static final String BASE_LEGACY_IP = BASE_SYSTEM_IP;//非遗数据库 public static final String BASE_NEWS_IP = BASE_SYSTEM_IP;//新闻 + public static final String BASE_SHOP_IP = IP_URL + "xzshop";//商城 // public static final String BASE_PLACE_IP = TEMP_IP + "venuebooking/";/* 场馆 */ public static final String BASE_PLACE_IMG_IP = BASE_PLACE_IP + "route/file/download/true/";/* 场馆 */ public static final String BASE_CULTURAL_IP = BASE_SYSTEM_IP + "culturalactivity/";/* 文化URL */ @@ -68,12 +70,6 @@ public class BaseUrlApi { // public static final String BASE_NEWS_DETAIL = "http://192.168.0.104/";//新闻 - - - - - - public static final String BASE_NEWS_DETAIL = BASE_SYSTEM_IP;//新闻 // public static final String BASE_IMG_URL = BASE_IP + "route/file/download/true/"; // GET /app/appversion/downloadapp/{appVersionId} diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/BaseUrlInterceptor.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/BaseUrlInterceptor.java index a26a531..5d92b2d 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/BaseUrlInterceptor.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/retrofit_net/conver/BaseUrlInterceptor.java @@ -44,6 +44,8 @@ public class BaseUrlInterceptor implements Interceptor { newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_LIVE_IP); } else if ("social".equals(headerValue)) { newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_CULTURAL_SHARE); + } else if ("shop".equals(headerValue)) { + newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_SHOP_IP); } else { newBaseUrl = oldHttpUrl; } diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseFragment.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseFragment.java index 9d54d60..a742bd1 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseFragment.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseFragment.java @@ -12,15 +12,12 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; -import com.alibaba.android.arouter.launcher.ARouter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.sucstepsoft.cm_utils.R; -import com.sucstepsoft.cm_utils.constant.PathConfig; -import com.sucstepsoft.cm_utils.utils.LogUtils; - import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.sucstepsoft.cm_utils.R; + public abstract class BaseFragment extends Fragment { public static final int STATE_LOAD = 1234;//加载中 public static final int STATE_ERROR = 1235;//加载失败 @@ -100,12 +97,16 @@ public abstract class BaseFragment extends Fragment { mIvFragmentEmptyData.setVisibility(View.VISIBLE); mTvFragmentErrorHint.setText("暂无数据"); mDataView.setVisibility(View.GONE); + mSrlView.finishLoadMore(); + mSrlView.finishRefresh(); mSrlView.setEnableLoadMore(true); mSrlView.setEnableRefresh(true); break; case STATE_SUCCESS: mLlHintView.setVisibility(View.GONE); mDataView.setVisibility(View.VISIBLE); + mSrlView.finishLoadMore(); + mSrlView.finishRefresh(); mSrlView.setEnableLoadMore(true); mSrlView.setEnableRefresh(true); break; @@ -115,6 +116,8 @@ public abstract class BaseFragment extends Fragment { mPbFragmentLoading.setVisibility(View.GONE); mIvFragmentEmptyData.setVisibility(View.VISIBLE); mTvFragmentErrorHint.setText("加载失败,请稍后重试"); + mSrlView.finishLoadMore(); + mSrlView.finishRefresh(); mSrlView.setEnableLoadMore(true); mSrlView.setEnableRefresh(true); break; @@ -124,6 +127,8 @@ public abstract class BaseFragment extends Fragment { mDataView.setVisibility(View.GONE); mIvFragmentEmptyData.setVisibility(View.GONE); mTvFragmentErrorHint.setText("加载中..."); + mSrlView.finishLoadMore(); + mSrlView.finishRefresh(); mSrlView.setEnableLoadMore(false); mSrlView.setEnableRefresh(false); default: diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseRecyclerAdapter.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseRecyclerAdapter.java index 1b209f4..47a7fe0 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseRecyclerAdapter.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/BaseRecyclerAdapter.java @@ -1,12 +1,10 @@ package com.sucstepsoft.cm_utils.core.widget.base; import android.content.Context; +import android.view.ViewGroup; import androidx.recyclerview.widget.RecyclerView; -import android.view.ViewGroup; - -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.RequestOptions; import com.sucstepsoft.cm_utils.R; import com.sucstepsoft.cm_utils.utils.ConvertUtils; @@ -60,6 +58,10 @@ public abstract class BaseRecyclerAdapter if (mListener != null) { holder.itemView.setOnClickListener(v -> mListener.onItemClickListen(mData.get(position))); } + if (mPosListener != null) { + holder.itemView.setOnClickListener(v -> mPosListener.onItemClickListener(mData.get(position), + position)); + } } /** @@ -131,6 +133,12 @@ public abstract class BaseRecyclerAdapter this.mListener = listener; } + private OnItemPositionClickListener mPosListener; + + public void addOnItemPosClickListener(OnItemPositionClickListener listener) { + this.mPosListener = listener; + } + /** * 条目点击事件回调 * @@ -139,4 +147,9 @@ public abstract class BaseRecyclerAdapter public interface OnItemClicklistener { void onItemClickListen(T t); } + + //带position + public interface OnItemPositionClickListener { + void onItemClickListener(T t, int p); + } } diff --git a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/FragmentUtils.java b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/FragmentUtils.java index 60e4409..df2b55a 100755 --- a/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/FragmentUtils.java +++ b/cm_utils/src/main/java/com/sucstepsoft/cm_utils/core/widget/base/FragmentUtils.java @@ -12,28 +12,38 @@ public class FragmentUtils { public static Fragment getActivityFragment() { - Fragment fragment = (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULEACTIVITY_FRAGMENT_MAIN).navigation(); + Fragment fragment = + (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULEACTIVITY_FRAGMENT_MAIN).navigation(); return fragment; } public static Fragment getHomeFragment() { - Fragment fragment = (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_FRAGMENT_MAIN).navigation(); + Fragment fragment = + (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_MAIN_FRAGMENT_MAIN).navigation(); return fragment; } public static Fragment getPlaceFragment() { - Fragment fragment = (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_PLACE_FRAGMENT_MAIN).navigation(); + Fragment fragment = + (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_PLACE_FRAGMENT_MAIN).navigation(); return fragment; } public static Fragment getMineFragment() { - Fragment fragment = (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_MINE_FRAGMENT_MAIN).navigation(); + Fragment fragment = + (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_MINE_FRAGMENT_MAIN).navigation(); return fragment; } public static Fragment getCulturalFragment() { - Fragment fragment = (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_CULTURAL_FRAGMENT_MAIN).navigation(); + Fragment fragment = + (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_CULTURAL_FRAGMENT_MAIN).navigation(); return fragment; } + public static Fragment getShopFragment() { + Fragment fragment = + (Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_SHOP_FRAGMENT_SORT_LIST).navigation(); + return fragment; + } } diff --git a/cm_utils/src/main/res/values/attrs.xml b/cm_utils/src/main/res/values/attrs.xml index d63ec66..4353921 100755 --- a/cm_utils/src/main/res/values/attrs.xml +++ b/cm_utils/src/main/res/values/attrs.xml @@ -96,4 +96,6 @@ + + \ No newline at end of file diff --git a/cm_utils/src/main/res/values/colors.xml b/cm_utils/src/main/res/values/colors.xml index bf8d9f3..6266eac 100755 --- a/cm_utils/src/main/res/values/colors.xml +++ b/cm_utils/src/main/res/values/colors.xml @@ -136,6 +136,7 @@ #9D9D9D #F4F4F4 #fbf8f1 + #FBFBFB #EDEDED #efeff4 #efefef @@ -182,4 +183,5 @@ #AA1BAAE2 #AA37B54A #AA6B6FD2 + \ No newline at end of file diff --git a/cm_utils/src/main/res/values/dimens.xml b/cm_utils/src/main/res/values/dimens.xml index 8e43eab..96cd6d4 100755 --- a/cm_utils/src/main/res/values/dimens.xml +++ b/cm_utils/src/main/res/values/dimens.xml @@ -9,4 +9,5 @@ 14sp 15sp 16sp + \ No newline at end of file diff --git a/cm_utils/src/main/res/values/styles.xml b/cm_utils/src/main/res/values/styles.xml index 7ea801f..6bb8185 100755 --- a/cm_utils/src/main/res/values/styles.xml +++ b/cm_utils/src/main/res/values/styles.xml @@ -324,4 +324,6 @@ right|center_vertical 14sp + + \ No newline at end of file diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/MainActivity.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/MainActivity.java index c1af923..0982628 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/MainActivity.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/activitys/base/MainActivity.java @@ -82,15 +82,15 @@ public class MainActivity extends BaseActivity { mIbBack.setVisibility(View.GONE); mRlTitleBar1.setVisibility(View.VISIBLE); mFragments = new ArrayList<>(); - Fragment activityFragment = FragmentUtils.getActivityFragment(); Fragment homefragment = FragmentUtils.getHomeFragment(); + Fragment shopFragment = FragmentUtils.getShopFragment(); Fragment placeFragment = FragmentUtils.getPlaceFragment(); Fragment culturalFragment = FragmentUtils.getCulturalFragment(); Fragment mineMainFragment = FragmentUtils.getMineFragment(); mFragments.add(homefragment); - mFragments.add(activityFragment); mFragments.add(placeFragment); mFragments.add(culturalFragment); + mFragments.add(shopFragment); mFragments.add(mineMainFragment); String locationCity = UserLgUtils.getCurrentCity(); if (TextUtils.isEmpty(locationCity)) { @@ -122,22 +122,6 @@ public class MainActivity extends BaseActivity { String city = TextUtils.isEmpty(UserLgUtils.getCurrentCity()) ? "地区选择" : UserLgUtils.getCurrentCity(); mTvAppBack.setText(city); return true; - } else if (itemId == R.id.tab_activity) { - ImmersionBar.with(this) - .titleBar(mLlTitleBar) - .keyboardEnable(false) - .statusBarColor(R.color.titleBar) - .statusBarDarkFont(false) - .init(); - //活动 - mLlTitleBar.setVisibility(View.VISIBLE); - mRlTitleBar.setVisibility(View.VISIBLE); - mRlTitleBar1.setVisibility(View.VISIBLE); - mVpContent.setCurrentItem(1, false); - mIvInto.setVisibility(View.GONE); - mTvBaseTitle.setText(item.getTitle()); - mTvAppBack.setVisibility(View.GONE); - return true; } else if (itemId == R.id.tab_place) { //场馆 ImmersionBar.with(this) @@ -152,7 +136,7 @@ public class MainActivity extends BaseActivity { mLlImg.setVisibility(View.VISIBLE); mIvInto.setVisibility(View.VISIBLE); mTvAppBack.setVisibility(View.GONE); - mVpContent.setCurrentItem(2, false); + mVpContent.setCurrentItem(1, false); mTvBaseTitle.setText(item.getTitle()); mIvInto.setOnClickListener(v -> ARouter.getInstance() .build(PathConfig.PATH_MODULE_MAP_SHOW_ICON).navigation()); @@ -169,7 +153,23 @@ public class MainActivity extends BaseActivity { mRlTitleBar.setVisibility(View.VISIBLE); mRlTitleBar1.setVisibility(View.VISIBLE); mIvInto.setVisibility(View.GONE); + mVpContent.setCurrentItem(2, false); + mTvBaseTitle.setText(item.getTitle()); + mTvAppBack.setVisibility(View.GONE); + return true; + } else if (itemId == R.id.tab_shop) { + ImmersionBar.with(this) + .titleBar(mLlTitleBar) + .keyboardEnable(false) + .statusBarColor(R.color.titleBar) + .statusBarDarkFont(false) + .init(); + //活动 + mLlTitleBar.setVisibility(View.VISIBLE); + mRlTitleBar.setVisibility(View.VISIBLE); + mRlTitleBar1.setVisibility(View.VISIBLE); mVpContent.setCurrentItem(3, false); + mIvInto.setVisibility(View.GONE); mTvBaseTitle.setText(item.getTitle()); mTvAppBack.setVisibility(View.GONE); return true; @@ -359,7 +359,7 @@ public class MainActivity extends BaseActivity { public void setCurrentPage(int i, String title) { if (i == 1) { - mBnv.setSelectedItemId(R.id.tab_activity); +// mBnv.setSelectedItemId(R.id.tab_activity); } else { mBnv.setSelectedItemId(R.id.tab_place); } diff --git a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java index 06e4125..7414231 100755 --- a/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java +++ b/modulemain/src/main/java/com/tengshisoft/mudulemain/cultural/fragment/HomeFragment.java @@ -776,7 +776,7 @@ public class HomeFragment extends BaseFragment { */ private void chooseFuncPage(MainFuncBean mainFuncBean) { if ("精彩活动".equals(mainFuncBean.getTitle())) { - mMainActivity.setCurrentPage(1, "活动"); +// TODO mMainActivity.setCurrentPage(1, "活动"); } else if ("场馆导航".equals(mainFuncBean.getTitle())) { mMainActivity.setCurrentPage(2, "场馆"); } else if ("非遗文化".equals(mainFuncBean.getTitle())) { diff --git a/modulemain/src/main/res/menu/bottom.xml b/modulemain/src/main/res/menu/bottom.xml index c2cf039..7f56225 100755 --- a/modulemain/src/main/res/menu/bottom.xml +++ b/modulemain/src/main/res/menu/bottom.xml @@ -4,10 +4,6 @@ android:id="@+id/tab_home" android:icon="@drawable/sel_bottom_tab_home" android:title="首页" /> - + { + + public ShopSortAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public ShopSortHolder createHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_third_shop_sort, parent, false); + return new ShopSortHolder(view); + } + + @Override + public void bindHolder(ShopSortHolder h, int i) { + ShopSortListBean.SubListBean bean = mData.get(i); + h.mTvName.setText(bean.getName()); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortExAdapter.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortExAdapter.java new file mode 100644 index 0000000..5370c4f --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortExAdapter.java @@ -0,0 +1,103 @@ +package com.tenlionsoft.moduleshop.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.TextView; + +import com.tengshisoft.moduleshop.R; +import com.tenlionsoft.moduleshop.beans.ShopSortListBean; + +import java.util.List; + +public class ShopSortExAdapter extends BaseExpandableListAdapter { + private List mDatas; + private Context mContext; + private int mGroupPos = -1; + private int mChildPos = -1; + + public ShopSortExAdapter(Context ctx, List data) { + this.mDatas = data; + this.mContext = ctx; + } + + @Override + public int getGroupCount() { + return mDatas.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return mDatas.get(groupPosition).getSubList().size(); + } + + @Override + public ShopSortListBean getGroup(int groupPosition) { + return mDatas.get(groupPosition); + } + + @Override + public ShopSortListBean.SubListBean getChild(int groupPosition, int childPosition) { + ShopSortListBean.SubListBean bean = mDatas.get(groupPosition).getSubList().get(childPosition); + return bean; + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return true; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_group_shop_sort, parent, false); + TextView tvName = view.findViewById(R.id.tv_sort); + ShopSortListBean group = getGroup(groupPosition); + tvName.setText(group.getName()); + return view; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, + ViewGroup parent) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_child_shop_sort, parent, false); + TextView tvName = view.findViewById(R.id.tv_sort); + ShopSortListBean.SubListBean child = getChild(groupPosition, childPosition); + tvName.setText(child.getName()); + if (mChildPos == childPosition && mGroupPos == groupPosition) { + view.setBackgroundColor(Color.BLUE); + } else { + view.setBackgroundColor(Color.WHITE); + } + return view; + } + + public void setDatas(List datas) { + this.mDatas = datas; + notifyDataSetChanged(); + } + + + public void setSelectChild(int groupPos, int childPos) { + this.mGroupPos = groupPos; + this.mChildPos = childPos; + notifyDataSetChanged(); + } + + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortOneAdapter.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortOneAdapter.java new file mode 100644 index 0000000..b5a4df1 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortOneAdapter.java @@ -0,0 +1,51 @@ +package com.tenlionsoft.moduleshop.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.tengshisoft.moduleshop.R; +import com.tenlionsoft.moduleshop.beans.ShopSortListBean; +import com.tenlionsoft.moduleshop.holder.ShopSortOneHolder; + +import java.util.List; + +/** + * 一级分类 + */ +public class ShopSortOneAdapter extends BaseRecyclerAdapter { + private int mSelPos = -1; + + public ShopSortOneAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public ShopSortOneHolder createHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_group_shop_sort, parent, false); + return new ShopSortOneHolder(view); + } + + @Override + public void bindHolder(ShopSortOneHolder h, int i) { + ShopSortListBean bean = mData.get(i); + h.mTvName.setText(bean.getName()); + if (mSelPos == i) { + h.mIvIcon.setVisibility(View.VISIBLE); + h.itemView.setBackgroundColor(Color.WHITE); + h.mTvName.setTextColor(Color.parseColor("#9F1512")); + } else { + h.itemView.setBackgroundColor(Color.parseColor("#FBFBFB")); + h.mIvIcon.setVisibility(View.INVISIBLE); + h.mTvName.setTextColor(Color.BLACK); + } + } + + public void setSelect(int selPos) { + this.mSelPos = selPos; + notifyDataSetChanged(); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortSecondAdapter.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortSecondAdapter.java new file mode 100644 index 0000000..b4a9989 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/adapter/ShopSortSecondAdapter.java @@ -0,0 +1,62 @@ +package com.tenlionsoft.moduleshop.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.recyclerview.widget.GridLayoutManager; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.tengshisoft.moduleshop.R; +import com.tenlionsoft.moduleshop.beans.ShopSortListBean; +import com.tenlionsoft.moduleshop.holder.ShopSortSecondHolder; + +import java.util.List; + +/** + * 二级分类 + */ +public class ShopSortSecondAdapter extends BaseRecyclerAdapter { + + public ShopSortSecondAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public ShopSortSecondHolder createHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.item_second_shop_sort, parent, false); + return new ShopSortSecondHolder(view); + } + + @Override + public void bindHolder(ShopSortSecondHolder h, int i) { + ShopSortListBean.SubListBean bean = mData.get(i); + h.mTvSecondName.setText(bean.getName()); + if (bean.getSubList() != null && bean.getSubList().size() > 0) { + ShopSortAdapter adapter = new ShopSortAdapter(mContext, bean.getSubList()); + h.mRlvSor.setVisibility(View.VISIBLE); + h.mRlvSor.setLayoutManager(new GridLayoutManager(mContext, 3)); + h.mRlvSor.setAdapter(adapter); + h.mLlEmpty.setVisibility(View.GONE); + adapter.addOnItemPosClickListener((subListBean, p) -> { + if (mItemClick != null) { + mItemClick.click(subListBean, p); + } + }); + } else { + h.mRlvSor.setVisibility(View.GONE); + h.mLlEmpty.setVisibility(View.VISIBLE); + } + } + + private ItemClick mItemClick; + + public void addClick(ItemClick click) { + this.mItemClick = click; + } + + public interface ItemClick { + void click(ShopSortListBean.SubListBean b, int p); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopListBean.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopListBean.java new file mode 100644 index 0000000..b9dc204 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopListBean.java @@ -0,0 +1,199 @@ +package com.tenlionsoft.moduleshop.beans; + +import java.util.List; + +public class ShopListBean { + + private int page; + private List rows; + private int total; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String categoryId; + private String categoryName; + private String categorySubId; + private String categorySubName; + private int goodStar; + private String goodsDescription; + private String goodsIcon; + private String goodsId; + private int goodsIsPopular; + private String goodsName; + private String goodsNotFreight; + private int goodsPrice; + private int goodsSalesVolume; + private int goodsSort; + private int paymentType; + private String shopId; + private String shopName; + private int userEvaluate; + + public String getCategoryId() { + return categoryId; + } + + public void setCategoryId(String categoryId) { + this.categoryId = categoryId; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public String getCategorySubId() { + return categorySubId; + } + + public void setCategorySubId(String categorySubId) { + this.categorySubId = categorySubId; + } + + public String getCategorySubName() { + return categorySubName; + } + + public void setCategorySubName(String categorySubName) { + this.categorySubName = categorySubName; + } + + public int getGoodStar() { + return goodStar; + } + + public void setGoodStar(int goodStar) { + this.goodStar = goodStar; + } + + public String getGoodsDescription() { + return goodsDescription; + } + + public void setGoodsDescription(String goodsDescription) { + this.goodsDescription = goodsDescription; + } + + public String getGoodsIcon() { + return goodsIcon; + } + + public void setGoodsIcon(String goodsIcon) { + this.goodsIcon = goodsIcon; + } + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public int getGoodsIsPopular() { + return goodsIsPopular; + } + + public void setGoodsIsPopular(int goodsIsPopular) { + this.goodsIsPopular = goodsIsPopular; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public String getGoodsNotFreight() { + return goodsNotFreight; + } + + public void setGoodsNotFreight(String goodsNotFreight) { + this.goodsNotFreight = goodsNotFreight; + } + + public int getGoodsPrice() { + return goodsPrice; + } + + public void setGoodsPrice(int goodsPrice) { + this.goodsPrice = goodsPrice; + } + + public int getGoodsSalesVolume() { + return goodsSalesVolume; + } + + public void setGoodsSalesVolume(int goodsSalesVolume) { + this.goodsSalesVolume = goodsSalesVolume; + } + + public int getGoodsSort() { + return goodsSort; + } + + public void setGoodsSort(int goodsSort) { + this.goodsSort = goodsSort; + } + + public int getPaymentType() { + return paymentType; + } + + public void setPaymentType(int paymentType) { + this.paymentType = paymentType; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getShopName() { + return shopName; + } + + public void setShopName(String shopName) { + this.shopName = shopName; + } + + public int getUserEvaluate() { + return userEvaluate; + } + + public void setUserEvaluate(int userEvaluate) { + this.userEvaluate = userEvaluate; + } + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopSortListBean.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopSortListBean.java new file mode 100644 index 0000000..2e9ec41 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/beans/ShopSortListBean.java @@ -0,0 +1,156 @@ +package com.tenlionsoft.moduleshop.beans; + +import java.util.List; + +public class ShopSortListBean { + + private String code; + private String icon; + private String id; + private boolean isParent; + private String name; + private String pId; + private String pName; + private List subList; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public boolean isIsParent() { + return isParent; + } + + public void setIsParent(boolean isParent) { + this.isParent = isParent; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPId() { + return pId; + } + + public void setPId(String pId) { + this.pId = pId; + } + + public String getPName() { + return pName; + } + + public void setPName(String pName) { + this.pName = pName; + } + + public List getSubList() { + return subList; + } + + public void setSubList(List subList) { + this.subList = subList; + } + + public static class SubListBean { + private String code; + private String icon; + private String id; + private boolean isParent; + private String name; + private String pId; + private String pName; + private List subList; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public boolean isIsParent() { + return isParent; + } + + public void setIsParent(boolean isParent) { + this.isParent = isParent; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPId() { + return pId; + } + + public void setPId(String pId) { + this.pId = pId; + } + + public String getPName() { + return pName; + } + + public void setPName(String pName) { + this.pName = pName; + } + + public List getSubList() { + return subList; + } + + public void setSubList(List subList) { + this.subList = subList; + } + + + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/fragments/ShopSortFragment.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/fragments/ShopSortFragment.java new file mode 100644 index 0000000..6a40da7 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/fragments/ShopSortFragment.java @@ -0,0 +1,152 @@ +package com.tenlionsoft.moduleshop.fragments; + +import android.view.View; +import android.widget.LinearLayout; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; +import com.sucstepsoft.cm_utils.core.widget.base.BaseFragment; +import com.sucstepsoft.cm_utils.utils.ExceptionHandler; +import com.sucstepsoft.cm_utils.utils.toast.ToastUtils; +import com.tengshisoft.moduleshop.R; +import com.tengshisoft.moduleshop.R2; +import com.tenlionsoft.moduleshop.adapter.ShopSortOneAdapter; +import com.tenlionsoft.moduleshop.adapter.ShopSortSecondAdapter; +import com.tenlionsoft.moduleshop.beans.ShopSortListBean; +import com.tenlionsoft.moduleshop.net.ShopApi; + +import java.util.ArrayList; +import java.util.List; + +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_SHOP_FRAGMENT_SORT_LIST) +public class ShopSortFragment extends BaseFragment { + @BindView(R2.id.ll_empty) + LinearLayout mLlEmpty; + @BindView(R2.id.rlv_one_sort) + RecyclerView mRlvOneSort; + @BindView(R2.id.rlv_sort) + RecyclerView mRlvSort; + private Unbinder mBind; + private List mDatas; + private List mSubListBeans = new ArrayList<>(); + private ShopSortSecondAdapter mSecondAdapter; + private ShopSortOneAdapter mOneAdapter; + + @Override + protected int getContentViewId() { + return R.layout.fragment_shop_sort; + } + + @Override + protected void setDataToView(View dataView) { + mBind = ButterKnife.bind(this, dataView); + setStateView(STATE_LOAD); + mDatas = new ArrayList<>(); + mOneAdapter = new ShopSortOneAdapter(mActivity, mDatas); + mRlvOneSort.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvOneSort.setAdapter(mOneAdapter); + mOneAdapter.addOnItemPosClickListener((shopSortListBean, p) -> { + mOneAdapter.setSelect(p); + mSubListBeans = shopSortListBean.getSubList(); + mSecondAdapter.setData(mSubListBeans); + if (mSubListBeans.size() > 0) { + mLlEmpty.setVisibility(View.GONE); + } else { + mLlEmpty.setVisibility(View.VISIBLE); + } + }); + mSecondAdapter = new ShopSortSecondAdapter(mActivity, mSubListBeans); + mRlvSort.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvSort.setAdapter(mSecondAdapter); + mSecondAdapter.addClick(new ShopSortSecondAdapter.ItemClick() { + @Override + public void click(ShopSortListBean.SubListBean b, int p) { + ToastUtils.show("sss==" + b.getName()); + } + }); + getShopCategoryList(); + } + + /** + * 获取商品分类 + */ + private void getShopCategoryList() { + RetrofitManager.getInstance() + .create(ShopApi.class) + .getShopCategoryList() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List shopSortListBeans) { + if (null != shopSortListBeans && shopSortListBeans.size() > 0) { + setStateView(STATE_SUCCESS); + mDatas = shopSortListBeans; + mOneAdapter.setSelect(0); + mOneAdapter.setData(mDatas); + mSubListBeans = mDatas.get(0).getSubList(); + if (mSubListBeans.size() > 0) { + mLlEmpty.setVisibility(View.GONE); + } else { + mLlEmpty.setVisibility(View.VISIBLE); + } + mSecondAdapter.setData(mSubListBeans); + } else { + setStateView(STATE_EMPTY); + } + } + + @Override + public void onError(Throwable e) { + setStateView(STATE_ERROR); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + @Override + public void onDestroy() { + if (mBind != null) { + mBind.unbind(); + } + super.onDestroy(); + } + + @Override + protected void refreshView() { + mSrlView.finishRefresh(); + mSrlView.finishLoadMore(); + } + + @Override + protected void loadMoreData() { + mSrlView.finishRefresh(); + mSrlView.finishLoadMore(); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortHolder.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortHolder.java new file mode 100644 index 0000000..ef03ef5 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortHolder.java @@ -0,0 +1,21 @@ +package com.tenlionsoft.moduleshop.holder; + +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.tengshisoft.moduleshop.R; + +public class ShopSortHolder extends RecyclerView.ViewHolder { + public TextView mTvName; + public ImageView mIvIcon; + + public ShopSortHolder(@NonNull View itemView) { + super(itemView); + mTvName=itemView.findViewById(R.id.tv_second); + mIvIcon=itemView.findViewById(R.id.iv_icon); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortOneHolder.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortOneHolder.java new file mode 100644 index 0000000..40d0fd1 --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortOneHolder.java @@ -0,0 +1,21 @@ +package com.tenlionsoft.moduleshop.holder; + +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.tengshisoft.moduleshop.R; + +public class ShopSortOneHolder extends RecyclerView.ViewHolder { + public TextView mTvName; + public ImageView mIvIcon; + + public ShopSortOneHolder(@NonNull View itemView) { + super(itemView); + mTvName = itemView.findViewById(R.id.tv_sort); + mIvIcon = itemView.findViewById(R.id.iv_indic); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortSecondHolder.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortSecondHolder.java new file mode 100644 index 0000000..31f7c7b --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/holder/ShopSortSecondHolder.java @@ -0,0 +1,23 @@ +package com.tenlionsoft.moduleshop.holder; + +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.tengshisoft.moduleshop.R; + +public class ShopSortSecondHolder extends RecyclerView.ViewHolder { + public TextView mTvSecondName; + public RecyclerView mRlvSor; + public LinearLayout mLlEmpty; + + public ShopSortSecondHolder(@NonNull View itemView) { + super(itemView); + mTvSecondName = itemView.findViewById(R.id.tv_second); + mRlvSor = itemView.findViewById(R.id.rlv_third_sort); + mLlEmpty = itemView.findViewById(R.id.ll_empty); + } +} diff --git a/moduleshop/src/main/java/com/tenlionsoft/moduleshop/net/ShopApi.java b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/net/ShopApi.java new file mode 100644 index 0000000..cd9710b --- /dev/null +++ b/moduleshop/src/main/java/com/tenlionsoft/moduleshop/net/ShopApi.java @@ -0,0 +1,46 @@ +package com.tenlionsoft.moduleshop.net; + +import com.tenlionsoft.moduleshop.beans.ShopListBean; +import com.tenlionsoft.moduleshop.beans.ShopSortListBean; + +import java.util.List; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Headers; +import retrofit2.http.Query; + +public interface ShopApi { + //获取商品分类 + @Headers({"base_url_name:shop", "Content-Type:application/json", "Accept:application/json"}) + @GET("app/category/listztreerelease") + Observable> getShopCategoryList(); + + + //根据分类ID商品检索 + @Headers({"base_url_name:shop", "Content-Type:application/json", "Accept:application/json"}) + @GET("app/shopgoods/solrrelease") + Observable getShopList(@Query("page") String page, + @Query("rows") String rows, + @Query("categoryId") String categoryId); + + /** + * 商品检索 + * + * @param page + * @param rows + * @param categoryId 商品分类 + * @param name 商品名称 + * @param payType 支付类型 1 线上支付 2到店支付 + * @param uE 商品评分 + * @return + */ + @Headers({"base_url_name:shop", "Content-Type:application/json", "Accept:application/json"}) + @GET("app/shopgoods/solrrelease") + Observable getShopList(@Query("page") String page, + @Query("rows") String rows, + @Query("categoryId") String categoryId, + @Query("goodsName") String name, + @Query("paymentType") String payType, + @Query("userEvaluate") String uE); +} diff --git a/moduleshop/src/main/res/drawable-xhdpi/ic_catelog_indic_line.png b/moduleshop/src/main/res/drawable-xhdpi/ic_catelog_indic_line.png new file mode 100644 index 0000000000000000000000000000000000000000..add1c5f511582c3c10c080286f2c8d54aaa4e03e GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|l001;LoEE0 zQx*sqBweVgJnstE5aN)84|0Q2Nkdly`B^ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/moduleshop/src/main/res/layout/item_child_shop_sort.xml b/moduleshop/src/main/res/layout/item_child_shop_sort.xml new file mode 100644 index 0000000..221ba83 --- /dev/null +++ b/moduleshop/src/main/res/layout/item_child_shop_sort.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/moduleshop/src/main/res/layout/item_group_shop_sort.xml b/moduleshop/src/main/res/layout/item_group_shop_sort.xml new file mode 100644 index 0000000..bda9284 --- /dev/null +++ b/moduleshop/src/main/res/layout/item_group_shop_sort.xml @@ -0,0 +1,25 @@ + + + + + + + \ No newline at end of file diff --git a/moduleshop/src/main/res/layout/item_second_shop_sort.xml b/moduleshop/src/main/res/layout/item_second_shop_sort.xml new file mode 100644 index 0000000..3d667af --- /dev/null +++ b/moduleshop/src/main/res/layout/item_second_shop_sort.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/moduleshop/src/main/res/layout/item_third_shop_sort.xml b/moduleshop/src/main/res/layout/item_third_shop_sort.xml new file mode 100644 index 0000000..cbb0eba --- /dev/null +++ b/moduleshop/src/main/res/layout/item_third_shop_sort.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file