商品分类

This commit is contained in:
itgaojian163 2022-12-20 17:57:03 +08:00
parent 80ee78d2d1
commit 6c729c0943
32 changed files with 1197 additions and 76 deletions

View File

@ -38,7 +38,7 @@ public class BaseMyApplication extends Application {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
MultiDex.install(this); MultiDex.install(this);
// ARouter.openDebug(); ARouter.openDebug();
MagicScreenAdapter.initDesignWidthInDp(1024, true); MagicScreenAdapter.initDesignWidthInDp(1024, true);
ARouter.init(BaseMyApplication.this); ARouter.init(BaseMyApplication.this);
initShare(); initShare();

View File

@ -63,7 +63,7 @@ dependencies {
annotationProcessor "com.github.bumptech.glide:compiler:${rootProject.ext.supportGlide}" annotationProcessor "com.github.bumptech.glide:compiler:${rootProject.ext.supportGlide}"
//butterknife //butterknife
api "com.jakewharton:butterknife:$rootProject.ext.gButterKnifeVersion" api "com.jakewharton:butterknife:$rootProject.ext.gButterKnifeVersion"
//// ////
implementation "com.contrarywind:Android-PickerView:${rootProject.ext.pickerViewVersion}" implementation "com.contrarywind:Android-PickerView:${rootProject.ext.pickerViewVersion}"
implementation "com.contrarywind:wheelview:${rootProject.ext.wheelVersion}" implementation "com.contrarywind:wheelview:${rootProject.ext.wheelVersion}"
//recyclerview //recyclerview

View File

@ -60,7 +60,8 @@ public class PathConfig {
public static final String DID_CITY_CODE = "640675";//日喀则市编码 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_LEFT = 2333;//一图左
public static final int NEWS_TYPE_SINGLE_PIC_RIGHT = 2334;//一图右 public static final int NEWS_TYPE_SINGLE_PIC_RIGHT = 2334;//一图右
public static final int NEWS_TYPE_SINGLE_PIC_BOTTOM = 2335;//一图下 public static final int NEWS_TYPE_SINGLE_PIC_BOTTOM = 2335;//一图下
@ -78,9 +79,14 @@ public class PathConfig {
// N员bc405346-8714-4ded-89ac-9cc4d755f66a // N员bc405346-8714-4ded-89ac-9cc4d755f66a
// 巡检25affe67-134c-4a32-ba41-64b0cfedc782 // 巡检25affe67-134c-4a32-ba41-64b0cfedc782
public static final int PATROL_SECTOR_INDEX = 3;//巡更点NFC使用的扇区 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 CATCH_PATH =
public static final String VIDEO_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME + File.separator + "videoCache" + File.separator; Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME + File.separator +
public static final String PROJECT_CATCH_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + PROJECT_NAME;//项目缓存目录 "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"; 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_PLACEDETAIL = "/moduleplace/activity/placedetail";//场馆详情
public static final String PATH_MODULE_PLACE_ACTIVITY_PLACELIST = "/moduleplace/activity/placelist";//场馆列表 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_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_TICKET_DISTINE = "/moduleplace/activity/distineticket";//门票预定
public static final String PATH_MODULE_PLACE_DISTINE_BOOKING = "/moduleplace/activity/distinebooking";//场次预定 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_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 = "/modulecultural/activity/legacy";//非遗数据库
public static final String PATH_MODULE_CULTURAL_ACTIVITY_LEGACY_DETAIL = "/modulecultural/activity/legacy/detail"; 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_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_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_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_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 = "/modulecultural/activity/vounteermanage";//志愿团队
public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_LIST = "/modulecultural/activity/vounteermanagelsit";//我创建的自愿者团队 public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_LIST = "/modulecultural/activity" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_TEAM = "/modulecultural/activity/vounteermember";//志愿者列表 "/vounteermanagelsit";//我创建的自愿者团队
public static final String PATH_MODULE_CULTURAL_VOUNTEER_MEMBER_DETAIL = "/modulecultural/activity/vounteermemberdetail";//志愿者详情 public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_TEAM = "/modulecultural/activity/vounteermember"
public static final String PATH_MODULE_CULTURAL_VOUNTEER_MANAGE_MEMBER = "/modulecultural/activity/vounteermemberedit";//审批团队成员 ;//志愿者列表
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_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_DETAIL = "/modulecultural/activity/livedetail";//点播直播详情
public static final String PATH_MODULE_CULTURAL_LIVE = "/modulecultural/activity/live";//点播直播 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_LOCKBACK = "/modulecultural/activity/livelookback";//直播回看
public static final String PATH_MODULE_CULTURAL_LIVE_LIST = "/modulecultural/activity/livelookbacklist";//直播回看播放列表 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_DETAIL = "/modulecultural/activity/vounteer" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_MINE_TEAM_EDIT = "/modulecultural/activity/vounteer/edit";//编辑我创建的团队 "/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_LIST = "/modulecultural/activity/vounteer" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_DETAIL = "/modulecultural/activity/vounteer/activitydetail";//志愿者活动详情 "/activitylist";//志愿者活动列表
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_DETAIL = "/modulecultural/activity/vounteer" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_SINGLE = "/modulecultural/activity/vounteer/actviitysignsingle";//志愿活动报名-个人 "/activitydetail";//志愿者活动详情
public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_LOG = "/modulecultural/activity/vounteer/actviitylog";//活动日志 public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_TEAM = "/modulecultural/activity" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_EDIT = "/modulecultural/activity/vounteer/actviityedit";//修改我发起的活动 "/vounteer/actviitysignteam";//志愿活动报名-团队
public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_MINE = "/modulecultural/activity/vounteer/activitymine";//我的志愿活动 public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_SIGN_IN_SINGLE = "/modulecultural/activity" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_CHOOSE_TEAM = "/modulecultural/activity/vounteer/activitychooseteam";//活动报名选择我的团队 "/vounteer/actviitysignsingle";//志愿活动报名-个人
public static final String PATH_MODULE_CULTURAL_VOUNTEER_INFO_DETAIL = "/modulecultural/activity/vounteer/infodetail";//志愿者个人信息 public static final String PATH_MODULE_CULTURAL_VOUNTEER_ACTIVITY_LOG = "/modulecultural/activity/vounteer" +
public static final String PATH_MODULE_CULTURAL_VOUNTEER_INFO_EDIT = "/modulecultural/activity/vounteer/infoedit";//自愿者信息修改 "/actviitylog";//活动日志
public static final String PATH_MODULE_CULTURAL_VOUNTEER_FRAGMENT_TEAM = "/modulecultural/fragment/vounteerteam";//rlv_teams 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 = "/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_PUBLISH = "/modulecultural/activity" +
public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_MINE_LIST = "/modulecultural/activity/shareculturalmine";//我的文化分享 "/shareculturalpublish";//发布文化分享
public static final String PATH_MODULE_CULTURAL_ACTIVITY_SHARE_DETAIL = "/modulecultural/activity/shareculturaldetail";//文化分享详情 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=========我的========================= //===========================ModuleMine=========我的=========================
public static final String PATH_MODULE_MINE_COLLECT = "/modulemine/activity/collectlist";//我的收藏列表 public static final String PATH_MODULE_MINE_COLLECT = "/modulemine/activity/collectlist";//我的收藏列表
@ -230,5 +260,6 @@ public class PathConfig {
//====================Player======================= //====================Player=======================
public static final String PATH_MODULE_PLAYER_SIMPLE_VIDEO = "/moduleplayer/activity/simpleplayer";//单纯播放器 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";//商城分类
} }

View File

@ -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://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 = "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.wgink.ink/usercenter/";/* 正式IP */
// public static final String IP = "https://www.xzszwhy.cn/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/"; // 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_CULTURAL_SHARE = BASE_SYSTEM_IP;/* 文化分享 */
public static final String BASE_LEGACY_IP = 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_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_IP = TEMP_IP + "venuebooking/";/* 场馆 */
public static final String BASE_PLACE_IMG_IP = BASE_PLACE_IP + "route/file/download/true/";/* 场馆 */ 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 */ 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 = "http://192.168.0.104/";//新闻
public static final String BASE_NEWS_DETAIL = BASE_SYSTEM_IP;//新闻 public static final String BASE_NEWS_DETAIL = BASE_SYSTEM_IP;//新闻
// public static final String BASE_IMG_URL = BASE_IP + "route/file/download/true/"; // public static final String BASE_IMG_URL = BASE_IP + "route/file/download/true/";
// GET /app/appversion/downloadapp/{appVersionId} // GET /app/appversion/downloadapp/{appVersionId}

View File

@ -44,6 +44,8 @@ public class BaseUrlInterceptor implements Interceptor {
newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_LIVE_IP); newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_LIVE_IP);
} else if ("social".equals(headerValue)) { } else if ("social".equals(headerValue)) {
newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_CULTURAL_SHARE); newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_CULTURAL_SHARE);
} else if ("shop".equals(headerValue)) {
newBaseUrl = HttpUrl.parse(BaseUrlApi.BASE_SHOP_IP);
} else { } else {
newBaseUrl = oldHttpUrl; newBaseUrl = oldHttpUrl;
} }

View File

@ -12,15 +12,12 @@ import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; 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.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.sucstepsoft.cm_utils.R;
public abstract class BaseFragment extends Fragment { public abstract class BaseFragment extends Fragment {
public static final int STATE_LOAD = 1234;//加载中 public static final int STATE_LOAD = 1234;//加载中
public static final int STATE_ERROR = 1235;//加载失败 public static final int STATE_ERROR = 1235;//加载失败
@ -100,12 +97,16 @@ public abstract class BaseFragment extends Fragment {
mIvFragmentEmptyData.setVisibility(View.VISIBLE); mIvFragmentEmptyData.setVisibility(View.VISIBLE);
mTvFragmentErrorHint.setText("暂无数据"); mTvFragmentErrorHint.setText("暂无数据");
mDataView.setVisibility(View.GONE); mDataView.setVisibility(View.GONE);
mSrlView.finishLoadMore();
mSrlView.finishRefresh();
mSrlView.setEnableLoadMore(true); mSrlView.setEnableLoadMore(true);
mSrlView.setEnableRefresh(true); mSrlView.setEnableRefresh(true);
break; break;
case STATE_SUCCESS: case STATE_SUCCESS:
mLlHintView.setVisibility(View.GONE); mLlHintView.setVisibility(View.GONE);
mDataView.setVisibility(View.VISIBLE); mDataView.setVisibility(View.VISIBLE);
mSrlView.finishLoadMore();
mSrlView.finishRefresh();
mSrlView.setEnableLoadMore(true); mSrlView.setEnableLoadMore(true);
mSrlView.setEnableRefresh(true); mSrlView.setEnableRefresh(true);
break; break;
@ -115,6 +116,8 @@ public abstract class BaseFragment extends Fragment {
mPbFragmentLoading.setVisibility(View.GONE); mPbFragmentLoading.setVisibility(View.GONE);
mIvFragmentEmptyData.setVisibility(View.VISIBLE); mIvFragmentEmptyData.setVisibility(View.VISIBLE);
mTvFragmentErrorHint.setText("加载失败,请稍后重试"); mTvFragmentErrorHint.setText("加载失败,请稍后重试");
mSrlView.finishLoadMore();
mSrlView.finishRefresh();
mSrlView.setEnableLoadMore(true); mSrlView.setEnableLoadMore(true);
mSrlView.setEnableRefresh(true); mSrlView.setEnableRefresh(true);
break; break;
@ -124,6 +127,8 @@ public abstract class BaseFragment extends Fragment {
mDataView.setVisibility(View.GONE); mDataView.setVisibility(View.GONE);
mIvFragmentEmptyData.setVisibility(View.GONE); mIvFragmentEmptyData.setVisibility(View.GONE);
mTvFragmentErrorHint.setText("加载中..."); mTvFragmentErrorHint.setText("加载中...");
mSrlView.finishLoadMore();
mSrlView.finishRefresh();
mSrlView.setEnableLoadMore(false); mSrlView.setEnableLoadMore(false);
mSrlView.setEnableRefresh(false); mSrlView.setEnableRefresh(false);
default: default:

View File

@ -1,12 +1,10 @@
package com.sucstepsoft.cm_utils.core.widget.base; package com.sucstepsoft.cm_utils.core.widget.base;
import android.content.Context; import android.content.Context;
import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.view.ViewGroup;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.sucstepsoft.cm_utils.R; import com.sucstepsoft.cm_utils.R;
import com.sucstepsoft.cm_utils.utils.ConvertUtils; import com.sucstepsoft.cm_utils.utils.ConvertUtils;
@ -60,6 +58,10 @@ public abstract class BaseRecyclerAdapter<T, H extends RecyclerView.ViewHolder>
if (mListener != null) { if (mListener != null) {
holder.itemView.setOnClickListener(v -> mListener.onItemClickListen(mData.get(position))); 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<T, H extends RecyclerView.ViewHolder>
this.mListener = listener; this.mListener = listener;
} }
private OnItemPositionClickListener mPosListener;
public void addOnItemPosClickListener(OnItemPositionClickListener<T> listener) {
this.mPosListener = listener;
}
/** /**
* 条目点击事件回调 * 条目点击事件回调
* *
@ -139,4 +147,9 @@ public abstract class BaseRecyclerAdapter<T, H extends RecyclerView.ViewHolder>
public interface OnItemClicklistener<T> { public interface OnItemClicklistener<T> {
void onItemClickListen(T t); void onItemClickListen(T t);
} }
//带position
public interface OnItemPositionClickListener<T> {
void onItemClickListener(T t, int p);
}
} }

View File

@ -12,28 +12,38 @@ public class FragmentUtils {
public static Fragment getActivityFragment() { 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; return fragment;
} }
public static Fragment getHomeFragment() { 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; return fragment;
} }
public static Fragment getPlaceFragment() { 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; return fragment;
} }
public static Fragment getMineFragment() { 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; return fragment;
} }
public static Fragment getCulturalFragment() { 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; return fragment;
} }
public static Fragment getShopFragment() {
Fragment fragment =
(Fragment) ARouter.getInstance().build(PathConfig.PATH_MODULE_SHOP_FRAGMENT_SORT_LIST).navigation();
return fragment;
}
} }

View File

@ -96,4 +96,6 @@
<attr name="h_textsize" format="dimension" /> <attr name="h_textsize" format="dimension" />
<attr name="h_pro_step" format="integer" /> <attr name="h_pro_step" format="integer" />
</declare-styleable> </declare-styleable>
</resources> </resources>

View File

@ -136,6 +136,7 @@
<color name="text_9d">#9D9D9D</color> <color name="text_9d">#9D9D9D</color>
<color name="gray_f4">#F4F4F4</color> <color name="gray_f4">#F4F4F4</color>
<color name="gray_f1">#fbf8f1</color> <color name="gray_f1">#fbf8f1</color>
<color name="gray_1">#FBFBFB</color>
<color name="gray_df">#EDEDED</color> <color name="gray_df">#EDEDED</color>
<color name="gray_ef">#efeff4</color> <color name="gray_ef">#efeff4</color>
<color name="line">#efefef</color> <color name="line">#efefef</color>
@ -182,4 +183,5 @@
<color name="btn_blue">#AA1BAAE2</color> <color name="btn_blue">#AA1BAAE2</color>
<color name="btn_green">#AA37B54A</color> <color name="btn_green">#AA37B54A</color>
<color name="btn_purple">#AA6B6FD2</color> <color name="btn_purple">#AA6B6FD2</color>
</resources> </resources>

View File

@ -9,4 +9,5 @@
<dimen name="text_14">14sp</dimen> <dimen name="text_14">14sp</dimen>
<dimen name="text_15">15sp</dimen> <dimen name="text_15">15sp</dimen>
<dimen name="text_16">16sp</dimen> <dimen name="text_16">16sp</dimen>
</resources> </resources>

View File

@ -324,4 +324,6 @@
<item name="android:gravity">right|center_vertical</item> <item name="android:gravity">right|center_vertical</item>
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>
</style> </style>
</resources> </resources>

View File

@ -82,15 +82,15 @@ public class MainActivity extends BaseActivity {
mIbBack.setVisibility(View.GONE); mIbBack.setVisibility(View.GONE);
mRlTitleBar1.setVisibility(View.VISIBLE); mRlTitleBar1.setVisibility(View.VISIBLE);
mFragments = new ArrayList<>(); mFragments = new ArrayList<>();
Fragment activityFragment = FragmentUtils.getActivityFragment();
Fragment homefragment = FragmentUtils.getHomeFragment(); Fragment homefragment = FragmentUtils.getHomeFragment();
Fragment shopFragment = FragmentUtils.getShopFragment();
Fragment placeFragment = FragmentUtils.getPlaceFragment(); Fragment placeFragment = FragmentUtils.getPlaceFragment();
Fragment culturalFragment = FragmentUtils.getCulturalFragment(); Fragment culturalFragment = FragmentUtils.getCulturalFragment();
Fragment mineMainFragment = FragmentUtils.getMineFragment(); Fragment mineMainFragment = FragmentUtils.getMineFragment();
mFragments.add(homefragment); mFragments.add(homefragment);
mFragments.add(activityFragment);
mFragments.add(placeFragment); mFragments.add(placeFragment);
mFragments.add(culturalFragment); mFragments.add(culturalFragment);
mFragments.add(shopFragment);
mFragments.add(mineMainFragment); mFragments.add(mineMainFragment);
String locationCity = UserLgUtils.getCurrentCity(); String locationCity = UserLgUtils.getCurrentCity();
if (TextUtils.isEmpty(locationCity)) { if (TextUtils.isEmpty(locationCity)) {
@ -122,22 +122,6 @@ public class MainActivity extends BaseActivity {
String city = TextUtils.isEmpty(UserLgUtils.getCurrentCity()) ? "地区选择" : UserLgUtils.getCurrentCity(); String city = TextUtils.isEmpty(UserLgUtils.getCurrentCity()) ? "地区选择" : UserLgUtils.getCurrentCity();
mTvAppBack.setText(city); mTvAppBack.setText(city);
return true; 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) { } else if (itemId == R.id.tab_place) {
//场馆 //场馆
ImmersionBar.with(this) ImmersionBar.with(this)
@ -152,7 +136,7 @@ public class MainActivity extends BaseActivity {
mLlImg.setVisibility(View.VISIBLE); mLlImg.setVisibility(View.VISIBLE);
mIvInto.setVisibility(View.VISIBLE); mIvInto.setVisibility(View.VISIBLE);
mTvAppBack.setVisibility(View.GONE); mTvAppBack.setVisibility(View.GONE);
mVpContent.setCurrentItem(2, false); mVpContent.setCurrentItem(1, false);
mTvBaseTitle.setText(item.getTitle()); mTvBaseTitle.setText(item.getTitle());
mIvInto.setOnClickListener(v -> ARouter.getInstance() mIvInto.setOnClickListener(v -> ARouter.getInstance()
.build(PathConfig.PATH_MODULE_MAP_SHOW_ICON).navigation()); .build(PathConfig.PATH_MODULE_MAP_SHOW_ICON).navigation());
@ -169,7 +153,23 @@ public class MainActivity extends BaseActivity {
mRlTitleBar.setVisibility(View.VISIBLE); mRlTitleBar.setVisibility(View.VISIBLE);
mRlTitleBar1.setVisibility(View.VISIBLE); mRlTitleBar1.setVisibility(View.VISIBLE);
mIvInto.setVisibility(View.GONE); 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); mVpContent.setCurrentItem(3, false);
mIvInto.setVisibility(View.GONE);
mTvBaseTitle.setText(item.getTitle()); mTvBaseTitle.setText(item.getTitle());
mTvAppBack.setVisibility(View.GONE); mTvAppBack.setVisibility(View.GONE);
return true; return true;
@ -359,7 +359,7 @@ public class MainActivity extends BaseActivity {
public void setCurrentPage(int i, String title) { public void setCurrentPage(int i, String title) {
if (i == 1) { if (i == 1) {
mBnv.setSelectedItemId(R.id.tab_activity); // mBnv.setSelectedItemId(R.id.tab_activity);
} else { } else {
mBnv.setSelectedItemId(R.id.tab_place); mBnv.setSelectedItemId(R.id.tab_place);
} }

View File

@ -776,7 +776,7 @@ public class HomeFragment extends BaseFragment {
*/ */
private void chooseFuncPage(MainFuncBean mainFuncBean) { private void chooseFuncPage(MainFuncBean mainFuncBean) {
if ("精彩活动".equals(mainFuncBean.getTitle())) { if ("精彩活动".equals(mainFuncBean.getTitle())) {
mMainActivity.setCurrentPage(1, "活动"); // TODO mMainActivity.setCurrentPage(1, "活动");
} else if ("场馆导航".equals(mainFuncBean.getTitle())) { } else if ("场馆导航".equals(mainFuncBean.getTitle())) {
mMainActivity.setCurrentPage(2, "场馆"); mMainActivity.setCurrentPage(2, "场馆");
} else if ("非遗文化".equals(mainFuncBean.getTitle())) { } else if ("非遗文化".equals(mainFuncBean.getTitle())) {

View File

@ -4,10 +4,6 @@
android:id="@+id/tab_home" android:id="@+id/tab_home"
android:icon="@drawable/sel_bottom_tab_home" android:icon="@drawable/sel_bottom_tab_home"
android:title="首页" /> android:title="首页" />
<item
android:id="@+id/tab_activity"
android:icon="@drawable/sel_bottom_tab_activity"
android:title="活动" />
<item <item
android:id="@+id/tab_place" android:id="@+id/tab_place"
android:icon="@drawable/sel_bottom_tab_place" android:icon="@drawable/sel_bottom_tab_place"
@ -16,6 +12,10 @@
android:id="@+id/tab_cultural" android:id="@+id/tab_cultural"
android:icon="@drawable/sel_bottom_tab_cultural" android:icon="@drawable/sel_bottom_tab_cultural"
android:title="文化" /> android:title="文化" />
<item
android:id="@+id/tab_shop"
android:icon="@drawable/sel_bottom_tab_activity"
android:title="商城" />
<item <item
android:id="@+id/tab_mine" android:id="@+id/tab_mine"
android:icon="@drawable/sel_bottom_tab_mine" android:icon="@drawable/sel_bottom_tab_mine"

View File

@ -0,0 +1,32 @@
package com.tenlionsoft.moduleshop.adapter;
import android.content.Context;
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.ShopSortHolder;
import java.util.List;
public class ShopSortAdapter extends BaseRecyclerAdapter<ShopSortListBean.SubListBean, ShopSortHolder> {
public ShopSortAdapter(Context ctx, List<ShopSortListBean.SubListBean> 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());
}
}

View File

@ -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<ShopSortListBean> mDatas;
private Context mContext;
private int mGroupPos = -1;
private int mChildPos = -1;
public ShopSortExAdapter(Context ctx, List<ShopSortListBean> 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<ShopSortListBean> 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;
}
}

View File

@ -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<ShopSortListBean, ShopSortOneHolder> {
private int mSelPos = -1;
public ShopSortOneAdapter(Context ctx, List<ShopSortListBean> 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();
}
}

View File

@ -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<ShopSortListBean.SubListBean, ShopSortSecondHolder> {
public ShopSortSecondAdapter(Context ctx, List<ShopSortListBean.SubListBean> 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);
}
}

View File

@ -0,0 +1,199 @@
package com.tenlionsoft.moduleshop.beans;
import java.util.List;
public class ShopListBean {
private int page;
private List<RowsBean> rows;
private int total;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public List<RowsBean> getRows() {
return rows;
}
public void setRows(List<RowsBean> 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;
}
}
}

View File

@ -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<SubListBean> 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<SubListBean> getSubList() {
return subList;
}
public void setSubList(List<SubListBean> 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<SubListBean> 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<SubListBean> getSubList() {
return subList;
}
public void setSubList(List<SubListBean> subList) {
this.subList = subList;
}
}
}

View File

@ -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<ShopSortListBean> mDatas;
private List<ShopSortListBean.SubListBean> 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<List<ShopSortListBean>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<ShopSortListBean> 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();
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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<List<ShopSortListBean>> getShopCategoryList();
//根据分类ID商品检索
@Headers({"base_url_name:shop", "Content-Type:application/json", "Accept:application/json"})
@GET("app/shopgoods/solrrelease")
Observable<ShopListBean> 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<ShopListBean> 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);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_one_sort"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.3" />
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.7"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_sort"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white" />
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_empty_data" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="暂无数据"
android:textColor="@color/gray_text" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_sort"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:padding="5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@color/black"
android:textSize="14sp"
tools:text="二级分类" />
</LinearLayout>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_indic"
android:layout_width="10dp"
android:layout_height="15dp"
android:scaleType="fitXY"
android:src="@drawable/ic_catelog_indic_line" />
<TextView
android:id="@+id/tv_sort"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="15dp"
android:textColor="@color/black"
android:textSize="16sp"
tools:text="一级分类" />
</LinearLayout>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<TextView
android:id="@+id/tv_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:textColor="@color/black"
android:textSize="15sp"
android:textStyle="bold"
tools:text="二级分类" />
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardElevation="1dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_third_sort"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp" />
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_empty_data" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="暂无数据"
android:textSize="14sp" />
</LinearLayout>
</RelativeLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="fitXY" />
<TextView
android:id="@+id/tv_second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:textColor="@color/black"
android:textSize="14sp"
tools:text="三级分类" />
</LinearLayout>