Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
X
xxsq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王雪伟
xxsq
Commits
5050b9cb
Commit
5050b9cb
authored
May 27, 2022
by
王雪伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[提交人]:王雪伟
[提交简述] :小象省钱 [实现方案] :加入指示器
parent
8da58e26
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1058 additions
and
249 deletions
+1058
-249
NetConfig.java
cms/src/main/java/com/zxhl/cms/common/NetConfig.java
+5
-1
IHomeApi.kt
cms/src/main/java/com/zxhl/cms/net/api/IHomeApi.kt
+28
-0
AppInEntity.kt
cms/src/main/java/com/zxhl/cms/net/model/box/AppInEntity.kt
+22
-19
TabEntity.kt
cms/src/main/java/com/zxhl/cms/net/model/box/TabEntity.kt
+3
-2
TbGoodsEntity.kt
cms/src/main/java/com/zxhl/cms/net/model/qy/TbGoodsEntity.kt
+21
-0
TbGoodsItemEntity.kt
.../main/java/com/zxhl/cms/net/model/qy/TbGoodsItemEntity.kt
+52
-0
Utils.java
cms/src/main/java/com/zxhl/cms/utils/Utils.java
+25
-0
build.gradle
moduleMain/build.gradle
+6
-0
TbGoodsDetailActivity.kt
...ava/com/zxbw/modulemain/activity/TbGoodsDetailActivity.kt
+55
-4
ZeroBuyListActivity.kt
.../java/com/zxbw/modulemain/activity/ZeroBuyListActivity.kt
+4
-2
DetailBannerAdapter.kt
...n/java/com/zxbw/modulemain/adapter/DetailBannerAdapter.kt
+38
-0
GoodsListAdapter.kt
...main/java/com/zxbw/modulemain/adapter/GoodsListAdapter.kt
+16
-8
HomeBannerAdapter.kt
...ain/java/com/zxbw/modulemain/adapter/HomeBannerAdapter.kt
+37
-34
HomeQyBannerAdapter.kt
...n/java/com/zxbw/modulemain/adapter/HomeQyBannerAdapter.kt
+73
-0
HomeRecommendAdapter.kt
.../java/com/zxbw/modulemain/adapter/HomeRecommendAdapter.kt
+203
-0
HomeRecommendContract.kt
...ava/com/zxbw/modulemain/contract/HomeRecommendContract.kt
+11
-2
TbGoodsDetailContract.kt
...ava/com/zxbw/modulemain/contract/TbGoodsDetailContract.kt
+23
-0
HomeFragment.kt
...rc/main/java/com/zxbw/modulemain/fragment/HomeFragment.kt
+28
-31
RecommendFragment.kt
...in/java/com/zxbw/modulemain/fragment/RecommendFragment.kt
+63
-34
HomeRecommendPresenter.kt
...a/com/zxbw/modulemain/presenter/HomeRecommendPresenter.kt
+55
-11
TbGoodsDetailPresenter.kt
...a/com/zxbw/modulemain/presenter/TbGoodsDetailPresenter.kt
+68
-0
ViewPagerForRecyclerView.java
...va/com/zxbw/modulemain/view/ViewPagerForRecyclerView.java
+36
-0
activity_layout_tb_goods_detail.xml
...n/src/main/res/layout/activity_layout_tb_goods_detail.xml
+19
-7
fragment_layout_home.xml
moduleMain/src/main/res/layout/fragment_layout_home.xml
+25
-2
fragment_layout_recommend.xml
moduleMain/src/main/res/layout/fragment_layout_recommend.xml
+6
-88
item_layout_detail_banner.xml
moduleMain/src/main/res/layout/item_layout_detail_banner.xml
+14
-0
item_layout_goods_view.xml
moduleMain/src/main/res/layout/item_layout_goods_view.xml
+2
-0
item_layout_home_banner.xml
moduleMain/src/main/res/layout/item_layout_home_banner.xml
+1
-1
item_layout_home_qy_grid_view.xml
...ain/src/main/res/layout/item_layout_home_qy_grid_view.xml
+12
-0
item_layout_home_qy_view.xml
moduleMain/src/main/res/layout/item_layout_home_qy_view.xml
+28
-0
item_layout_home_zero_buy_view.xml
...in/src/main/res/layout/item_layout_home_zero_buy_view.xml
+78
-0
item_layout_jgq_qy_view.xml
moduleMain/src/main/res/layout/item_layout_jgq_qy_view.xml
+1
-3
No files found.
cms/src/main/java/com/zxhl/cms/common/NetConfig.java
View file @
5050b9cb
...
...
@@ -264,10 +264,14 @@ public class NetConfig {
}
//
权益卡
//
public
static
class
QY
{
public
static
final
String
QY_JGQ_CARD_LIST
=
"app/v1/game/xiaoxiang/equitCardList"
;
//金刚区权益列表
public
static
final
String
QY_JGQ_CARD_DETAIL
=
"app/v1/game/xiaoxiang/equitCardList/detail"
;
//获取权益详情
public
static
final
String
XX_GOODS_SEARCH
=
"app/v1/game/xiaoxiang/search"
;
//搜索
public
static
final
String
XX_GOODS_GUESS_LIKE
=
"app/v1/game/xiaoxiang/guessLike"
;
//猜你喜欢
public
static
final
String
XX_GOODS_CONVERT_LINK
=
"app/v1/game/xiaoxiang/convertLink"
;
//转链
public
static
final
String
XX_GOODS_ITEM_DETAIL
=
"app/v1/game/xiaoxiang/itemDetail"
;
//图文详情
}
...
...
cms/src/main/java/com/zxhl/cms/net/api/IHomeApi.kt
View file @
5050b9cb
...
...
@@ -7,6 +7,7 @@ import com.zxhl.cms.net.model.other.IsWeChatLoginEntity
import
com.zxhl.cms.net.model.other.WxBindEntity
import
com.zxhl.cms.net.model.qy.JgqQyEntity
import
com.zxhl.cms.net.model.qy.RightsDetailEntity
import
com.zxhl.cms.net.model.qy.TbGoodsEntity
import
com.zxhl.cms.net.model.uc.UserInfo
import
com.zxhl.cms.net.model.uc.VersionEntity
import
io.reactivex.Observable
...
...
@@ -338,5 +339,32 @@ interface IHomeApi {
@Query
(
"previewModel"
)
previewModel
:
String
):
Observable
<
Response
<
List
<
RightsDetailEntity
>>>
//商品搜索
@GET
(
NetConfig
.
QY
.
XX_GOODS_SEARCH
)
fun
getGoodsListSearch
(
@Query
(
"cate"
)
cate
:
String
,
@Query
(
"keyword"
)
keyword
:
String
,
@Query
(
"page"
)
page
:
Int
,
@Query
(
"size"
)
size
:
Int
):
Observable
<
Response
<
TbGoodsEntity
>>
//猜你喜欢
@GET
(
NetConfig
.
QY
.
XX_GOODS_GUESS_LIKE
)
fun
getGoodsGuessLike
(
@Query
(
"page"
)
page
:
Int
,
@Query
(
"size"
)
size
:
Int
):
Observable
<
Response
<
TbGoodsEntity
>>
//转链
@GET
(
NetConfig
.
QY
.
XX_GOODS_CONVERT_LINK
)
fun
getGoodsConvertLink
(
@Query
(
"link"
)
link
:
String
):
Observable
<
Response
<
TbGoodsEntity
>>
//图文详情
@GET
(
NetConfig
.
QY
.
XX_GOODS_ITEM_DETAIL
)
fun
getGoodsImgDetail
(
@Query
(
"productId"
)
productId
:
String
):
Observable
<
Response
<
TbGoodsEntity
>>
}
\ No newline at end of file
cms/src/main/java/com/zxhl/cms/net/model/box/AppInEntity.kt
View file @
5050b9cb
...
...
@@ -10,42 +10,45 @@ class AppInEntity {
var
depots_text
:
String
?
=
""
var
recover_type
:
String
=
""
var
login
:
String
=
""
//1开启 0 关闭
var
pay_config
:
PayConfig
?=
null
var
pay_config_v2
:
List
<
PayFun
>?=
null
var
box_price_config
:
List
<
BoxPriceConfig
>?=
null
var
pay_config
:
PayConfig
?
=
null
var
pay_config_v2
:
List
<
PayFun
>?
=
null
var
box_price_config
:
List
<
BoxPriceConfig
>?
=
null
var
risk_text
:
String
=
""
//
var
risk_open
:
String
=
""
//1开启 0 关闭
var
kefu_url
:
String
=
""
//客服地址
var
card_desc
:
String
=
""
//权益说明
var
tabs
:
List
<
TabEntity
>?
=
null
//tab
}
class
PayFun
:
Serializable
{
var
open
:
Int
?=
0
var
type
:
Int
?=
0
var
title
:
String
?=
""
var
icon
:
String
?=
""
class
PayFun
:
Serializable
{
var
open
:
Int
?
=
0
var
type
:
Int
?
=
0
var
title
:
String
?
=
""
var
icon
:
String
?
=
""
}
class
PayConfig
{
var
ali_ming
:
MinPay
?=
null
var
ali
:
aliPay
?=
null
var
ali_ming
:
MinPay
?
=
null
var
ali
:
aliPay
?
=
null
class
MinPay
{
var
type
:
Int
?=
0
var
title
:
String
?=
""
var
open
:
Int
?=
0
var
type
:
Int
?
=
0
var
title
:
String
?
=
""
var
open
:
Int
?
=
0
}
class
aliPay
{
var
type
:
Int
?=
0
var
title
:
String
?=
""
var
open
:
Int
?=
0
var
type
:
Int
?
=
0
var
title
:
String
?
=
""
var
open
:
Int
?
=
0
}
}
class
BoxPriceConfig
{
var
boxNum
:
Int
=
0
;
var
boxDiscount
:
Double
=
0.0
;
class
BoxPriceConfig
{
var
boxNum
:
Int
=
0
;
var
boxDiscount
:
Double
=
0.0
;
}
cms/src/main/java/com/zxhl/cms/net/model/box/TabEntity.kt
View file @
5050b9cb
package
com.zxhl.cms.net.model.box
class
TabEntity
{
var
name
:
String
?
=
"推荐"
var
id
:
String
?
=
"1"
var
name
:
String
?
=
""
var
id
:
String
?
=
""
var
value
:
String
?
=
""
}
\ No newline at end of file
cms/src/main/java/com/zxhl/cms/net/model/qy/TbGoodsEntity.kt
0 → 100644
View file @
5050b9cb
package
com.zxhl.cms.net.model.qy
import
java.io.Serializable
/**
* @author (wangXuewei)
* @detail :
*/
class
TbGoodsEntity
:
Serializable
{
var
msg
:
String
?
=
""
var
is_similar
:
String
?
=
""
var
result_list
:
List
<
TbGoodsItemEntity
>?
=
null
//普通tab
var
data
:
List
<
TbGoodsItemEntity
>?
=
null
//猜你喜欢
var
is_splitWord
:
String
?
=
""
var
error
:
String
?
=
""
var
search_type
:
String
?
=
""
var
request_id
:
String
?
=
""
var
force_index
:
String
?
=
""
var
total_results
:
String
?
=
""
}
\ No newline at end of file
cms/src/main/java/com/zxhl/cms/net/model/qy/TbGoodsItemEntity.kt
0 → 100644
View file @
5050b9cb
package
com.zxhl.cms.net.model.qy
import
java.io.Serializable
/**
* @author (wangXuewei)
* @detail :
*/
class
TbGoodsItemEntity
:
Serializable
{
var
presale_end_time
:
String
?
=
""
var
category_name
:
String
?
=
""
var
zk_final_price
:
String
?
=
""
var
coupon_remain_count
:
String
?
=
""
var
num_iid
:
String
?
=
""
var
shop_dsr
:
String
?
=
""
var
title
:
String
?
=
""
var
presale_tail_start_time
:
String
?
=
""
var
nick
:
String
?
=
""
var
level_one_category_id
:
String
?
=
""
var
presale_tail_end_time
:
String
?
=
""
var
presale_deposit
:
String
?
=
""
var
short_title
:
String
?
=
""
var
user_type
:
String
?
=
""
var
category_id
:
String
?
=
""
var
coupon_id
:
String
?
=
""
var
shop_title
:
String
?
=
""
var
small_images
:
List
<
String
>?
=
null
var
seller_id
:
String
?
=
""
var
coupon_amount
:
String
?
=
""
var
superior_brand
:
String
?
=
""
var
item_id
:
String
?
=
""
var
level_one_category_name
:
String
?
=
""
var
presale_start_time
:
String
?
=
""
var
coupon_total_count
:
String
?
=
""
var
pict_url
:
String
?
=
""
var
white_image
:
String
?
=
""
var
coupon_info
:
String
?
=
""
var
volume
:
String
?
=
""
var
coupon_start_fee
:
String
?
=
""
var
real_post_fee
:
String
?
=
""
var
provcity
:
String
?
=
""
var
tk_total_sales
:
String
?
=
""
var
item_url
:
String
?
=
""
var
commission_rate
:
String
?
=
""
var
tk_total_commi
:
String
?
=
""
var
item_description
:
String
?
=
""
var
reserve_price
:
String
?
=
""
var
coupon_start_time
:
String
?
=
""
var
coupon_end_time
:
String
?
=
""
var
viewType
:
Int
=
3
}
\ No newline at end of file
cms/src/main/java/com/zxhl/cms/utils/Utils.java
View file @
5050b9cb
...
...
@@ -1220,5 +1220,30 @@ public class Utils {
BigDecimal
p3
=
new
BigDecimal
(
Double
.
toString
(
m3
));
return
p1
.
multiply
(
p2
).
multiply
(
p3
).
setScale
(
2
,
RoundingMode
.
HALF_UP
).
doubleValue
();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public
static
double
sub
(
double
v1
,
double
v2
){
BigDecimal
b1
=
new
BigDecimal
(
Double
.
toString
(
v1
));
BigDecimal
b2
=
new
BigDecimal
(
Double
.
toString
(
v2
));
return
b1
.
subtract
(
b2
).
doubleValue
();
}
/**
* 对入参保留最多两位小数(舍弃末尾的0),如:
* 3.345->3.34
* 3.40->3.4
* 3.0->3
*/
public
static
String
getNoMoreThanTwoDigits
(
double
number
)
{
DecimalFormat
format
=
new
DecimalFormat
(
"0.##"
);
//未保留小数的舍弃规则,RoundingMode.FLOOR表示直接舍弃。
format
.
setRoundingMode
(
RoundingMode
.
FLOOR
);
return
format
.
format
(
number
);
}
}
moduleMain/build.gradle
View file @
5050b9cb
...
...
@@ -45,4 +45,10 @@ dependencies {
implementation
'com.contrarywind:Android-PickerView:4.1.9'
implementation
'androidx.appcompat:appcompat:1.2.0'
implementation
'androidx.constraintlayout:constraintlayout:2.0.4'
//banner
implementation
'com.github.zhpanvip:viewpagerindicator:1.2.1'
implementation
'com.github.zhpanvip:bannerviewpager:3.5.5'
//刷新 核心必须依赖
implementation
'io.github.scwang90:refresh-layout-kernel:2.0.5'
implementation
'io.github.scwang90:refresh-header-classics:2.0.5'
//经典刷新头
}
moduleMain/src/main/java/com/zxbw/modulemain/activity/TbGoodsDetailActivity.kt
View file @
5050b9cb
package
com.zxbw.modulemain.activity
import
android.util.Log
import
android.view.View
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.viewpager2.widget.ViewPager2
import
com.zxbw.modulemain.R
import
com.zxbw.modulemain.adapter.DetailBannerAdapter
import
com.zxbw.modulemain.adapter.GoodsListAdapter
import
com.zxbw.modulemain.contract.TbGoodsDetailContract
import
com.zxbw.modulemain.presenter.TbGoodsDetailPresenter
import
com.zxhl.cms.AppContext
import
com.zxhl.cms.common.base.BaseActivity
import
com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import
com.zxhl.cms.net.model.shop.ShopListEntity
import
com.zxhl.cms.utils.JumpUtils
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
kotlinx.android.synthetic.main.activity_layout_tb_goods_detail.*
...
...
@@ -16,9 +23,11 @@ import me.jessyan.autosize.utils.ScreenUtils
* @datetime 2022-05-24 17:12 GMT+8
* @detail : 淘宝商品详情
*/
class
TbGoodsDetailActivity
:
BaseActivity
()
{
class
TbGoodsDetailActivity
:
BaseActivity
()
,
TbGoodsDetailContract
.
View
{
private
var
mGoodsAdapter
:
GoodsListAdapter
?
=
null
;
private
var
mPresenter
:
TbGoodsDetailPresenter
?
=
null
;
private
var
goodsDetail
:
TbGoodsItemEntity
?
=
null
override
fun
before
()
{
super
.
before
()
...
...
@@ -36,18 +45,52 @@ class TbGoodsDetailActivity : BaseActivity() {
}
id_tb_goods_detail_title_sys_bar_view
.
layoutParams
.
height
=
statusBarHeight
goodsDetail
=
intent
.
getSerializableExtra
(
"goods"
)
as
TbGoodsItemEntity
mPresenter
=
TbGoodsDetailPresenter
(
this
)
mGoodsAdapter
=
GoodsListAdapter
(
this
,
OnRecycleItemClickListener
<
Any
>
{
view
,
position
,
data
->
showToast
(
"postion"
+
position
)
OnRecycleItemClickListener
<
TbGoodsItemEntity
>
{
view
,
position
,
data
->
JumpUtils
.
TbGoodsDetailJump
()
})
id_rcl_recommend_goods_list
?.
layoutManager
=
LinearLayoutManager
(
this
)
id_rcl_recommend_goods_list
.
adapter
=
mGoodsAdapter
id_img_close_btn
?.
setOnClickListener
(
this
)
initView
()
var
link
=
""
if
(!
goodsDetail
?.
item_url
.
isNullOrEmpty
())
{
link
=
goodsDetail
?.
item_url
!!
}
else
if
(!
goodsDetail
?.
item_id
.
isNullOrEmpty
())
{
link
=
goodsDetail
?.
item_id
!!
}
mPresenter
?.
getConvertLink
(
link
)
mPresenter
?.
getGoodsDetail
(
goodsDetail
?.
item_id
?:
""
)
}
private
fun
initView
()
{
if
(
goodsDetail
==
null
)
{
return
}
id_tv_goods_name
?.
text
=
goodsDetail
?.
title
var
mList
=
listOf
<
String
>(
""
)
id_detail_top_banner
.
apply
{
adapter
=
DetailBannerAdapter
()
setLifecycleRegistry
(
lifecycle
)
}.
create
((
goodsDetail
?.
small_images
?:
mList
)
as
List
<
Nothing
>?)
id_detail_top_banner
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
override
fun
onPageSelected
(
position
:
Int
)
{
Log
.
e
(
"MXL"
,
""
+
position
)
id_tv_vp_index
.
text
=
"${position + 1}/${goodsDetail?.small_images?.size ?: 0 + 1}"
}
})
}
override
fun
onClick
(
v
:
View
?)
{
...
...
@@ -58,4 +101,12 @@ class TbGoodsDetailActivity : BaseActivity() {
}
}
override
fun
setConvertLink
()
{
}
override
fun
setGoodsDetail
()
{
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/activity/ZeroBuyListActivity.kt
View file @
5050b9cb
...
...
@@ -8,6 +8,7 @@ import com.zxbw.modulemain.contract.ZeroBuyListContract
import
com.zxbw.modulemain.presenter.ZeroBuyListPresenter
import
com.zxhl.cms.AppContext
import
com.zxhl.cms.common.base.BaseActivity
import
com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
kotlinx.android.synthetic.main.activity_layout_zero_buy_list.*
...
...
@@ -17,7 +18,7 @@ import kotlinx.android.synthetic.main.activity_layout_zero_buy_list.*
* @detail :零元购列表
*/
class
ZeroBuyListActivity
:
BaseActivity
(),
ZeroBuyListContract
.
View
,
OnRecycleItemClickListener
<
An
y
>
{
OnRecycleItemClickListener
<
TbGoodsItemEntit
y
>
{
private
var
mPresenter
:
ZeroBuyListPresenter
?
=
null
private
var
mAdapter
:
GoodsListAdapter
?
=
null
;
...
...
@@ -54,7 +55,7 @@ class ZeroBuyListActivity : BaseActivity(), ZeroBuyListContract.View,
mPresenter
?.
getZeroBuyList
()
}
override
fun
onItemClick
(
view
:
View
?,
position
:
Int
,
data
:
An
y
?)
{
override
fun
onItemClick
(
view
:
View
?,
position
:
Int
,
data
:
TbGoodsItemEntit
y
?)
{
}
...
...
@@ -62,4 +63,5 @@ class ZeroBuyListActivity : BaseActivity(), ZeroBuyListContract.View,
id_zero_buy_refreshLayout
?.
isRefreshing
=
false
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/adapter/DetailBannerAdapter.kt
0 → 100644
View file @
5050b9cb
package
com.zxbw.modulemain.adapter
import
android.widget.ImageView
import
com.bumptech.glide.Glide
import
com.zhpan.bannerview.BaseBannerAdapter
import
com.zhpan.bannerview.BaseViewHolder
import
com.zxbw.modulemain.R
/**
* @author (wangXuewei)
* @datetime 2022-05-26 22:30 GMT+8
* @detail :
*/
class
DetailBannerAdapter
()
:
BaseBannerAdapter
<
String
>()
{
override
fun
bindData
(
holder
:
BaseViewHolder
<
String
>?,
data
:
String
?,
position
:
Int
,
pageSize
:
Int
)
{
var
imageView
=
holder
?.
findViewById
<
ImageView
>(
R
.
id
.
id_img_detail_banner_bg
)
as
ImageView
// if (mContext?.isFinishing==false){
// Glide.with(mContext!!)
// .load(data)
// .into(imageView)
// }
Glide
.
with
(
imageView
)
.
load
(
data
)
.
placeholder
(
R
.
drawable
.
beijing
)
.
into
(
imageView
);
}
override
fun
getLayoutId
(
viewType
:
Int
):
Int
{
return
R
.
layout
.
item_layout_detail_banner
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/adapter/GoodsListAdapter.kt
View file @
5050b9cb
...
...
@@ -17,33 +17,41 @@ import com.zxhl.cms.AppContext
import
com.zxhl.cms.common.base.BaseRecyclerAdapter
import
com.zxhl.cms.net.model.box.AddressEntity
import
com.zxhl.cms.net.model.box.LotteryEntity
import
com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
com.zxhl.cms.utils.Utils
import
com.zxhl.cms.widget.RecycleImageView
class
GoodsListAdapter
:
BaseRecyclerAdapter
<
An
y
,
GoodsListAdapter
.
ViewHolder
>
{
class
GoodsListAdapter
:
BaseRecyclerAdapter
<
TbGoodsItemEntit
y
,
GoodsListAdapter
.
ViewHolder
>
{
private
var
mContext
:
Activity
?
=
null
private
val
listener
:
OnRecycleItemClickListener
<
An
y
>
private
val
listener
:
OnRecycleItemClickListener
<
TbGoodsItemEntit
y
>
constructor
(
content
:
Activity
?,
listener
:
OnRecycleItemClickListener
<
An
y
>
listener
:
OnRecycleItemClickListener
<
TbGoodsItemEntit
y
>
)
:
super
()
{
mContext
=
content
this
.
listener
=
listener
}
override
fun
onBindViewHolder
(
holder
:
ViewHolder
,
position
:
Int
)
{
val
bean
=
mList
[
position
]
holder
.
id_tv_goods_name
?.
text
=
bean
.
title
if
(
mContext
?.
isFinishing
==
false
)
{
holder
.
id_item_goods_img
?.
setLoadImageUrl
(
bean
.
pict_url
,
0
,
5
)
}
holder
.
id_tv_tb_price_value
?.
text
=
"淘宝商城价 : ¥${bean.reserve_price}"
holder
.
id_tv_yhq_value
?.
text
=
"${bean.coupon_start_fee}元券"
var
r_price
=
bean
.
reserve_price
?.
toDoubleOrNull
()
?:
0
as
Double
var
c_price
=
bean
.
coupon_start_fee
?.
toDoubleOrNull
()
?:
0
as
Double
holder
.
id_tv_goods_price
?.
text
=
Utils
.
getNoMoreThanTwoDigits
(
Utils
.
sub
(
r_price
,
c_price
))
holder
.
id_rl_goods_item_view
?.
setOnClickListener
{
listener
.
onItemClick
(
it
,
position
,
null
)
listener
.
onItemClick
(
it
,
position
,
bean
)
}
}
override
fun
getItemCount
():
Int
{
return
23
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
ViewHolder
{
return
ViewHolder
(
LayoutInflater
.
from
(
AppContext
.
get
())
...
...
moduleMain/src/main/java/com/zxbw/modulemain/adapter/HomeBannerAdapter.kt
View file @
5050b9cb
...
...
@@ -4,55 +4,58 @@ import android.app.Activity
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.
LinearLayout
import
android
.widget.TextView
import
androidx.recyclerview.widget.RecyclerView
import
android.widget.
ImageView
import
android
x.viewpager.widget.PagerAdapter
import
com.bumptech.glide.Glide
import
com.zxbw.modulemain.R
import
com.zxhl.cms.AppContext
import
com.zxhl.cms.common.base.BaseRecyclerAdapter
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
com.zxhl.cms.widget.RecycleImageView
import
com.zxhl.cms.utils.Utils
import
java.util.ArrayList
class
HomeBannerAdapter
:
BaseRecyclerAdapter
<
Any
,
HomeBannerAdapter
.
ViewHolder
>
{
private
var
mContext
:
Activity
?
=
null
private
val
listener
:
OnRecycleItemClickListener
<
Any
>
class
HomeBannerAdapter
:
PagerAdapter
{
private
var
mActivity
:
Activity
?
=
null
private
var
mViewList
:
List
<
String
>
=
ArrayList
()
constructor
(
content
:
Activity
?
,
listener
:
OnRecycleItemClickListener
<
Any
>
mList
:
List
<
String
>
,
context
:
Activity
,
)
:
super
()
{
m
Context
=
content
this
.
listener
=
listener
m
ViewList
=
mList
//构造方法,参数是我们的页卡,这样比较方便。
mActivity
=
context
}
override
fun
onBindViewHolder
(
holder
:
ViewHolder
,
position
:
Int
)
{
holder
.
id_ll_item
?.
setOnClickListener
{
listener
.
onItemClick
(
it
,
position
,
null
)
}
override
fun
isViewFromObject
(
p0
:
View
,
p1
:
Any
):
Boolean
{
return
p0
==
p1
}
override
fun
getItemCount
():
Int
{
return
3
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
ViewHolder
{
return
ViewHolder
(
LayoutInflater
.
from
(
AppContext
.
get
())
.
inflate
(
R
.
layout
.
item_layout_home_banner
,
parent
,
false
)
)
override
fun
instantiateItem
(
container
:
ViewGroup
,
position
:
Int
):
Any
{
val
data
=
mViewList
[
position
]
val
view
=
LayoutInflater
.
from
(
mActivity
).
inflate
(
R
.
layout
.
item_layout_home_banner
,
null
)
val
bg
=
view
.
findViewById
<
ImageView
>(
R
.
id
.
id_img_banner_bg
)
if
(
mActivity
?.
isFinishing
==
false
){
Glide
.
with
(
mActivity
!!
).
load
(
data
).
placeholder
(
R
.
drawable
.
img_banner_ms_bg
).
into
(
bg
)
}
bg
.
setOnClickListener
{
Utils
.
showToast
(
mActivity
,
"postion$position"
)
}
container
.
addView
(
view
)
// 添加页卡
return
view
}
class
ViewHolder
:
RecyclerView
.
ViewHolder
{
var
id_ll_item
:
LinearLayout
?
override
fun
getItemPosition
(
`object`
:
Any
):
Int
{
return
super
.
getItemPosition
(
`object`
)
}
override
fun
destroyItem
(
container
:
ViewGroup
,
position
:
Int
,
`object`
:
Any
)
{
constructor
(
itemView
:
View
)
:
super
(
itemView
)
{
id_ll_item
=
itemView
.
findViewById
<
LinearLayout
>(
R
.
id
.
id_ll_item
)
container
.
removeView
(
`object`
as
View
)
}
}
override
fun
getCount
():
Int
{
return
mViewList
.
size
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/adapter/HomeQyBannerAdapter.kt
0 → 100644
View file @
5050b9cb
package
com.zxbw.modulemain.adapter
import
android.app.Activity
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.ImageView
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
androidx.viewpager.widget.PagerAdapter
import
com.bumptech.glide.Glide
import
com.zxbw.modulemain.R
import
com.zxhl.cms.net.model.qy.JgqQyEntity
import
com.zxhl.cms.utils.JumpUtils
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
com.zxhl.cms.utils.Utils
import
java.util.ArrayList
class
HomeQyBannerAdapter
:
PagerAdapter
{
private
var
mActivity
:
Activity
?
=
null
private
var
mViewList
:
List
<
List
<
JgqQyEntity
>>
=
ArrayList
()
constructor
(
mList
:
List
<
List
<
JgqQyEntity
>>,
context
:
Activity
?,
)
:
super
()
{
mViewList
=
mList
//构造方法,参数是我们的页卡,这样比较方便。
mActivity
=
context
}
override
fun
isViewFromObject
(
p0
:
View
,
p1
:
Any
):
Boolean
{
return
p0
==
p1
}
override
fun
instantiateItem
(
container
:
ViewGroup
,
position
:
Int
):
Any
{
val
data
=
mViewList
[
position
]
Log
.
d
(
"wxw"
,
"data${data.size}"
)
val
view
=
LayoutInflater
.
from
(
mActivity
).
inflate
(
R
.
layout
.
item_layout_home_qy_grid_view
,
null
)
val
grid_view
=
view
.
findViewById
<
RecyclerView
>(
R
.
id
.
id_rcl_home_jgq_qy_grid_list
)
var
mJgqQyAdapter
=
JgqQyAdapter
(
mActivity
,
OnRecycleItemClickListener
<
JgqQyEntity
>
{
view
,
position
,
data
->
JumpUtils
.
RightsDetailJump
(
data
.
brand
,
data
.
icon
)
})
grid_view
.
layoutManager
=
GridLayoutManager
(
mActivity
,
5
)
grid_view
.
adapter
=
mJgqQyAdapter
mJgqQyAdapter
.
clear
()
mJgqQyAdapter
.
appendToList
(
data
)
container
.
addView
(
view
)
// 添加页卡
return
view
}
override
fun
getItemPosition
(
`object`
:
Any
):
Int
{
return
super
.
getItemPosition
(
`object`
)
}
override
fun
destroyItem
(
container
:
ViewGroup
,
position
:
Int
,
`object`
:
Any
)
{
container
.
removeView
(
`object`
as
View
)
}
override
fun
getCount
():
Int
{
return
mViewList
.
size
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/adapter/HomeRecommendAdapter.kt
0 → 100644
View file @
5050b9cb
package
com.zxbw.modulemain.adapter
import
android.app.Activity
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.RelativeLayout
import
android.widget.TextView
import
androidx.recyclerview.widget.RecyclerView
import
androidx.viewpager.widget.ViewPager
import
com.zhpan.indicator.IndicatorView
import
com.zxbw.modulemain.R
import
com.zxhl.cms.AppContext
import
com.zxhl.cms.common.base.BaseRecyclerAdapter
import
com.zxhl.cms.net.model.qy.JgqQyEntity
import
com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
com.zxhl.cms.utils.Utils
import
com.zxhl.cms.widget.RecycleImageView
/**
* @author (wangXuewei)
* @datetime 2022-05-26 21:05 GMT+8
* @detail :
*/
class
HomeRecommendAdapter
:
BaseRecyclerAdapter
<
TbGoodsItemEntity
,
RecyclerView
.
ViewHolder
>
{
private
var
mContext
:
Activity
?
=
null
private
val
listener
:
OnRecycleItemClickListener
<
TbGoodsItemEntity
>
private
val
VIEW_TYPE_QY_VIEW
=
1
private
val
VIEW_TYPE_ZERO_VIEW
=
2
private
val
VIEW_TYPE_GOODS_VIEW
=
3
constructor
(
content
:
Activity
?,
listener
:
OnRecycleItemClickListener
<
TbGoodsItemEntity
>
)
:
super
()
{
mContext
=
content
this
.
listener
=
listener
}
private
var
mIsShowQyView
=
false
;
fun
IsShowQyView
(
boolean
:
Boolean
)
{
mIsShowQyView
=
boolean
}
private
var
mQyDataList
:
List
<
JgqQyEntity
>?
=
null
fun
updateHomeQyData
(
qyDataList
:
List
<
JgqQyEntity
>)
{
mQyDataList
=
qyDataList
// notifyItemChanged(0)
}
override
fun
getItemViewType
(
position
:
Int
):
Int
{
if
(
position
==
0
&&
mIsShowQyView
)
{
return
VIEW_TYPE_QY_VIEW
}
else
{
return
VIEW_TYPE_GOODS_VIEW
}
}
override
fun
getItemCount
():
Int
{
if
(
mIsShowQyView
)
{
return
mList
.
size
+
1
}
else
{
return
mList
.
size
}
}
override
fun
onBindViewHolder
(
holder
:
RecyclerView
.
ViewHolder
,
position
:
Int
)
{
if
(
holder
is
GoodsViewHolder
)
{
var
viewNum
=
0
;
if
(
mIsShowQyView
)
{
viewNum
=
1
;
}
val
bean
=
mList
[
position
-
viewNum
]
holder
.
id_tv_goods_name
?.
text
=
bean
.
title
if
(
mContext
?.
isFinishing
==
false
)
{
holder
.
id_item_goods_img
?.
setLoadImageUrl
(
bean
.
pict_url
,
0
,
5
)
}
holder
.
id_tv_tb_price_value
?.
text
=
"淘宝商城价 : ¥${bean.reserve_price}"
holder
.
id_tv_yhq_value
?.
text
=
"${bean.coupon_start_fee}元券"
var
r_price
=
bean
.
reserve_price
?.
toDoubleOrNull
()
?:
0
as
Double
var
c_price
=
bean
.
coupon_start_fee
?.
toDoubleOrNull
()
?:
0
as
Double
holder
.
id_tv_goods_price
?.
text
=
Utils
.
getNoMoreThanTwoDigits
(
Utils
.
sub
(
r_price
,
c_price
)
)
holder
.
id_rl_goods_item_view
?.
setOnClickListener
{
listener
.
onItemClick
(
it
,
position
,
bean
)
}
}
else
if
(
holder
is
QyViewHolder
)
{
if
(!
mQyDataList
.
isNullOrEmpty
())
{
holder
.
qy_item_view
?.
visibility
=
View
.
VISIBLE
var
splitItemNum
=
15
;
val
result
=
ArrayList
<
List
<
JgqQyEntity
>>()
if
(
mQyDataList
?.
size
!!
<=
splitItemNum
)
{
result
.
add
(
mQyDataList
!!
)
}
else
{
//
val
splitNum
=
if
(
mQyDataList
?.
size
!!
%
splitItemNum
==
0
)
{
mQyDataList
?.
size
!!
/
splitItemNum
}
else
{
mQyDataList
?.
size
!!
/
splitItemNum
+
1
}
var
value
:
List
<
JgqQyEntity
>?
=
null
for
(
i
in
0
until
splitNum
)
{
if
(
i
<
splitNum
-
1
)
{
value
=
mQyDataList
?.
subList
(
i
*
splitItemNum
,
(
i
+
1
)
*
splitItemNum
)
}
else
{
// 最后一组
value
=
mQyDataList
?.
subList
(
i
*
splitItemNum
,
mQyDataList
?.
size
!!
)
}
if
(
value
!=
null
)
{
result
.
add
(
value
)
}
}
}
Log
.
d
(
"wxw"
,
"resultSize${result.size}"
)
var
mQyBannerAdapter
=
HomeQyBannerAdapter
(
result
,
mContext
)
holder
.
qy_vp
?.
adapter
=
mQyBannerAdapter
;
holder
.
qy_vp
?.
postDelayed
(
Runnable
{
holder
.
qy_vp
?.
requestLayout
()
},
100
)
holder
.
id_qy_indicator_view
?.
setupWithViewPager
(
holder
.
qy_vp
!!
)
}
else
{
holder
.
qy_item_view
?.
visibility
=
View
.
GONE
}
}
else
if
(
holder
is
ZeroViewHolder
)
{
}
}
override
fun
onCreateViewHolder
(
parent
:
ViewGroup
,
viewType
:
Int
):
RecyclerView
.
ViewHolder
{
if
(
viewType
==
VIEW_TYPE_QY_VIEW
)
{
return
QyViewHolder
(
LayoutInflater
.
from
(
AppContext
.
get
())
.
inflate
(
R
.
layout
.
item_layout_home_qy_view
,
parent
,
false
)
)
}
else
if
(
viewType
==
VIEW_TYPE_ZERO_VIEW
)
{
return
ZeroViewHolder
(
LayoutInflater
.
from
(
AppContext
.
get
())
.
inflate
(
R
.
layout
.
item_layout_home_zero_buy_view
,
parent
,
false
)
)
}
else
{
return
GoodsViewHolder
(
LayoutInflater
.
from
(
AppContext
.
get
())
.
inflate
(
R
.
layout
.
item_layout_goods_view
,
parent
,
false
)
)
}
}
class
GoodsViewHolder
:
RecyclerView
.
ViewHolder
{
var
id_rl_goods_item_view
:
RelativeLayout
?
var
id_item_goods_img
:
RecycleImageView
?
var
id_tv_goods_name
:
TextView
?
var
id_tv_yhq_value
:
TextView
?
var
id_tv_manjian_value
:
TextView
?
var
id_tv_tb_price_value
:
TextView
?
var
id_tv_goods_price
:
TextView
?
constructor
(
itemView
:
View
)
:
super
(
itemView
)
{
id_rl_goods_item_view
=
itemView
.
findViewById
<
RelativeLayout
>(
R
.
id
.
id_rl_goods_item_view
)
id_item_goods_img
=
itemView
.
findViewById
<
RecycleImageView
>(
R
.
id
.
id_item_goods_img
)
id_tv_goods_name
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
id_tv_goods_name
)
id_tv_yhq_value
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
id_tv_yhq_value
)
id_tv_manjian_value
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
id_tv_manjian_value
)
id_tv_tb_price_value
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
id_tv_tb_price_value
)
id_tv_goods_price
=
itemView
.
findViewById
<
TextView
>(
R
.
id
.
id_tv_goods_price
)
}
}
class
QyViewHolder
:
RecyclerView
.
ViewHolder
{
var
qy_item_view
:
RelativeLayout
?
var
qy_vp
:
ViewPager
?
var
id_qy_indicator_view
:
IndicatorView
?
constructor
(
itemView
:
View
)
:
super
(
itemView
)
{
qy_item_view
=
itemView
.
findViewById
<
RelativeLayout
>(
R
.
id
.
id_rl_home_qy_item_view
)
qy_vp
=
itemView
.
findViewById
<
ViewPager
>(
R
.
id
.
id_vp_home_jgq_qy_list
)
id_qy_indicator_view
=
itemView
.
findViewById
<
IndicatorView
>(
R
.
id
.
id_qy_indicator_view
)
}
}
class
ZeroViewHolder
:
RecyclerView
.
ViewHolder
{
constructor
(
itemView
:
View
)
:
super
(
itemView
)
{
}
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/contract/HomeRecommendContract.kt
View file @
5050b9cb
package
com.zxbw.modulemain.contract
import
com.zxhl.cms.net.model.qy.JgqQyEntity
import
com.zxhl.cms.net.model.qy.TbGoodsItemEntity
/**
* 推荐
...
...
@@ -8,10 +9,18 @@ import com.zxhl.cms.net.model.qy.JgqQyEntity
*/
class
HomeRecommendContract
{
interface
View
{
fun
setQyCardList
(
result
:
List
<
JgqQyEntity
>)
fun
setQyCardList
(
result
:
List
<
JgqQyEntity
>?)
fun
setTbGoodsList
(
isRefresh
:
Boolean
,
result
:
List
<
TbGoodsItemEntity
>?)
// fun setGuessLikeGoodsList(isRefresh: Boolean, result: List<TbGoodsItemEntity>?)
}
interface
Presenter
{
fun
getQyCardList
()
fun
getQyCardList
(
tabName
:
String
)
fun
getTbGoodsList
(
isRefresh
:
Boolean
,
cate
:
String
)
fun
getGuessLikeGoodsList
(
isRefresh
:
Boolean
)
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/contract/TbGoodsDetailContract.kt
0 → 100644
View file @
5050b9cb
package
com.zxbw.modulemain.contract
/**
*
*/
class
TbGoodsDetailContract
{
interface
View
{
fun
setConvertLink
()
fun
setGoodsDetail
()
}
interface
Presenter
{
fun
getConvertLink
(
link
:
String
)
fun
getGoodsDetail
(
productId
:
String
)
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/fragment/HomeFragment.kt
View file @
5050b9cb
package
com.zxbw.modulemain.fragment
import
android.graphics.Color
import
android.util.Log
import
android.view.View
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.PagerSnapHelper
import
com.flyco.tablayout.listener.OnTabSelectListener
import
com.zxbw.modulemain.R
import
com.zxbw.modulemain.adapter.DetailBannerAdapter
import
com.zxbw.modulemain.adapter.HomeBannerAdapter
import
com.zxhl.cms.common.Constant
import
com.zxhl.cms.common.FragmentAdapter
import
com.zxhl.cms.common.base.BaseFragment
import
com.zxhl.cms.net.ApiClient
import
com.zxhl.cms.net.RxSchedulers
import
com.zxhl.cms.net.SettingPreference
import
com.zxhl.cms.net.callback.BaseObserver
import
com.zxhl.cms.net.model.box.AppInEntity
import
com.zxhl.cms.net.model.box.TabEntity
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
kotlinx.android.synthetic.main.activity_layout_tb_goods_detail.*
import
kotlinx.android.synthetic.main.fragment_layout_home.*
import
me.jessyan.autosize.utils.ScreenUtils
...
...
@@ -21,7 +28,8 @@ import me.jessyan.autosize.utils.ScreenUtils
* Created by gaoleichao on 2021/10/25
*/
class
HomeFragment
:
BaseFragment
()
{
private
var
mBannerAdapter
:
HomeBannerAdapter
?
=
null
private
var
mBannerAdapter
:
HomeBannerAdapter
?
=
null
//Banner
override
fun
layoutID
():
Int
{
return
R
.
layout
.
fragment_layout_home
...
...
@@ -41,18 +49,13 @@ class HomeFragment : BaseFragment() {
statusBarHeight
=
40
;
}
id_title_sys_bar_view
.
layoutParams
.
height
=
statusBarHeight
mBannerAdapter
=
HomeBannerAdapter
(
activity
)
{
view
,
position
,
data
->
showToast
(
"pos"
+
position
)
var
mList
=
listOf
<
String
>(
""
,
""
,
""
)
if
(
activity
!=
null
){
mBannerAdapter
=
HomeBannerAdapter
(
mList
,
activity
!!
)
id_home_top_banner
.
adapter
=
mBannerAdapter
}
indicator_view
.
setupWithViewPager
(
id_home_top_banner
)
id_rcl_top_banner
.
layoutManager
=
LinearLayoutManager
(
activity
,
LinearLayoutManager
.
HORIZONTAL
,
false
)
id_rcl_top_banner
.
adapter
=
mBannerAdapter
val
pagerSnapHelper
=
PagerSnapHelper
()
pagerSnapHelper
.
attachToRecyclerView
(
id_rcl_top_banner
)
getTabList
()
id_rl_search_view
.
setOnClickListener
{
showToast
(
"搜索"
)
...
...
@@ -65,34 +68,26 @@ class HomeFragment : BaseFragment() {
private
fun
getTabList
()
{
ApiClient
.
homeApi
.
getBoxTab
().
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
List
<
TabEntity
>>()
{
override
fun
onSuccess
(
result
:
List
<
TabEntity
>?)
{
// if (result != null) {
// initViewPager(result)
// }
ApiClient
.
homeApi
.
getAppInfo
()
.
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
AppInEntity
>()
{
override
fun
onSuccess
(
result
:
AppInEntity
?)
{
SettingPreference
.
saveConfig
(
result
)
if
(
result
!=
null
&&
!
result
.
tabs
.
isNullOrEmpty
())
{
initViewPager
(
result
.
tabs
!!
)
}
}
override
fun
onFailure
(
e
:
Throwable
?,
code
:
String
?,
errorMsg
:
String
?)
{
Log
.
e
(
"wxw"
,
"ERROR"
+
code
+
errorMsg
)
val
config
=
SettingPreference
.
getConfig
();
if
(
config
!=
null
&&
!
config
.
tabs
.
isNullOrEmpty
())
{
initViewPager
(
config
.
tabs
!!
)
}
}
})
val
createTitles
=
ArrayList
<
TabEntity
>().
apply
{
add
(
TabEntity
())
add
(
TabEntity
())
add
(
TabEntity
())
add
(
TabEntity
())
add
(
TabEntity
())
add
(
TabEntity
())
add
(
TabEntity
())
add
(
TabEntity
())
}
initViewPager
(
createTitles
)
}
private
fun
initViewPager
(
result
:
List
<
TabEntity
>)
{
Log
.
d
(
"wxw"
,
"result"
+
result
.
size
)
val
adapter
=
FragmentAdapter
(
childFragmentManager
)
for
(
i
in
0
until
(
result
?.
size
?:
0
))
{
val
title
=
result
[
i
].
name
?:
""
...
...
@@ -101,6 +96,8 @@ class HomeFragment : BaseFragment() {
viewPager
?.
adapter
=
adapter
id_fragment_home_tab
?.
setViewPager
(
viewPager
)
id_fragment_home_tab
?.
overScrollMode
=
View
.
OVER_SCROLL_NEVER
id_fragment_home_tab
?.
notifyDataSetChanged
()
}
...
...
moduleMain/src/main/java/com/zxbw/modulemain/fragment/RecommendFragment.kt
View file @
5050b9cb
package
com.zxbw.modulemain.fragment
import
android.content.Intent
import
android.view.View
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.scwang.smart.refresh.footer.ClassicsFooter
import
com.scwang.smart.refresh.header.ClassicsHeader
import
com.zxbw.modulemain.R
import
com.zxbw.modulemain.activity.TbGoodsDetailActivity
import
com.zxbw.modulemain.adapter.GoodsListAdapter
import
com.zxbw.modulemain.adapter.HomeRecommendAdapter
import
com.zxbw.modulemain.adapter.JgqQyAdapter
import
com.zxbw.modulemain.adapter.ZeroBuyGoodsListAdapter
import
com.zxbw.modulemain.contract.HomeRecommendContract
import
com.zxbw.modulemain.presenter.HomeRecommendPresenter
import
com.zxhl.cms.common.base.BaseFragment
import
com.zxhl.cms.net.model.qy.JgqQyEntity
import
com.zxhl.cms.net.model.qy.TbGoodsItemEntity
import
com.zxhl.cms.utils.JumpUtils
import
com.zxhl.cms.utils.OnRecycleItemClickListener
import
kotlinx.android.synthetic.main.fragment_layout_recommend.*
...
...
@@ -20,13 +26,12 @@ import kotlinx.android.synthetic.main.fragment_layout_recommend.*
* @datetime 2022-05-20 19:01 GMT+8
* @detail : 首页推荐
*/
class
RecommendFragment
:
BaseFragment
,
HomeRecommendContract
.
View
{
class
RecommendFragment
:
BaseFragment
,
HomeRecommendContract
.
View
,
OnRecycleItemClickListener
<
TbGoodsItemEntity
>
{
private
val
title
:
String
private
var
mPresenter
:
HomeRecommendPresenter
?
=
null
private
var
mJgqQyAdapter
:
JgqQyAdapter
?
=
null
;
private
var
mZeroBuyAdapter
:
ZeroBuyGoodsListAdapter
?
=
null
;
private
var
mGoodsAdapter
:
GoodsListAdapter
?
=
null
;
private
var
mGoodsAdapter
:
HomeRecommendAdapter
?
=
null
;
override
fun
layoutID
():
Int
{
return
R
.
layout
.
fragment_layout_recommend
...
...
@@ -35,39 +40,38 @@ class RecommendFragment : BaseFragment, HomeRecommendContract.View {
override
fun
init
(
view
:
View
?)
{
mPresenter
=
HomeRecommendPresenter
(
this
)
mJgqQyAdapter
=
JgqQyAdapter
(
activity
,
OnRecycleItemClickListener
<
JgqQyEntity
>
{
view
,
position
,
data
->
JumpUtils
.
RightsDetailJump
(
data
.
brand
,
data
.
icon
)
})
mZeroBuyAdapter
=
ZeroBuyGoodsListAdapter
(
activity
,
OnRecycleItemClickListener
<
Any
>
{
view
,
position
,
data
->
JumpUtils
.
ZeroBuyJump
()
})
mGoodsAdapter
=
GoodsListAdapter
(
activity
,
OnRecycleItemClickListener
<
Any
>
{
view
,
position
,
data
->
showToast
(
"postion"
+
position
)
JumpUtils
.
TbGoodsDetailJump
()
})
//金刚区权益
val
gridLayoutManager
=
GridLayoutManager
(
activity
,
3
)
gridLayoutManager
.
orientation
=
LinearLayoutManager
.
HORIZONTAL
id_rcl_jgq_qy_list
?.
layoutManager
=
gridLayoutManager
id_rcl_jgq_qy_list
.
adapter
=
mJgqQyAdapter
//零元购
id_rcl_zero_buy_goods
?.
layoutManager
=
GridLayoutManager
(
activity
,
3
)
id_rcl_zero_buy_goods
.
adapter
=
mZeroBuyAdapter
mGoodsAdapter
=
HomeRecommendAdapter
(
activity
,
this
)
mGoodsAdapter
?.
IsShowQyView
(
title
==
"推荐"
)
//底部商品列表
id_rcl_goods_list
?.
layoutManager
=
LinearLayoutManager
(
activity
)
id_rcl_goods_list
.
adapter
=
mGoodsAdapter
id_ll_zero_buy_view
.
setOnClickListener
{
JumpUtils
.
ZeroBuyJump
()
id_refresh_view
.
setRefreshHeader
(
ClassicsHeader
(
activity
))
id_refresh_view
.
setRefreshFooter
(
ClassicsFooter
(
activity
))
id_refresh_view
.
setOnRefreshListener
{
// it.finishRefresh(2000/*,false*/);//传入false表示加载失败
if
(
title
.
equals
(
"猜你喜欢"
))
{
mPresenter
?.
getGuessLikeGoodsList
(
true
)
}
else
{
mPresenter
?.
getTbGoodsList
(
true
,
title
)
}
}
id_refresh_view
.
setOnLoadMoreListener
{
// it.finishLoadMore(2000/*,false*/);//传入false表示加载失败
if
(
title
.
equals
(
"猜你喜欢"
))
{
mPresenter
?.
getGuessLikeGoodsList
(
false
)
}
else
{
mPresenter
?.
getTbGoodsList
(
false
,
title
)
}
}
mPresenter
?.
getQyCardList
()
mPresenter
?.
getQyCardList
(
title
)
if
(
title
.
equals
(
"猜你喜欢"
))
{
mPresenter
?.
getGuessLikeGoodsList
(
true
)
}
else
{
mPresenter
?.
getTbGoodsList
(
true
,
title
)
}
}
companion
object
{
...
...
@@ -84,9 +88,34 @@ class RecommendFragment : BaseFragment, HomeRecommendContract.View {
this
.
title
=
""
}
override
fun
setQyCardList
(
result
:
List
<
JgqQyEntity
>)
{
mJgqQyAdapter
?.
clear
()
mJgqQyAdapter
?.
appendToList
(
result
)
override
fun
setQyCardList
(
result
:
List
<
JgqQyEntity
>?)
{
if
(!
result
.
isNullOrEmpty
())
{
mGoodsAdapter
?.
updateHomeQyData
(
result
)
}
}
override
fun
setTbGoodsList
(
isRefresh
:
Boolean
,
result
:
List
<
TbGoodsItemEntity
>?)
{
if
(
isRefresh
){
id_refresh_view
.
finishRefresh
(!
result
.
isNullOrEmpty
());
//传入false表示加载失败
}
else
{
id_refresh_view
.
finishLoadMore
(!
result
.
isNullOrEmpty
());
//传入false表示加载失败
}
if
(
isRefresh
&&
!
result
.
isNullOrEmpty
())
{
mGoodsAdapter
?.
clear
()
}
if
(!
result
.
isNullOrEmpty
())
{
mGoodsAdapter
?.
appendToList
(
result
)
}
}
override
fun
onItemClick
(
view
:
View
?,
position
:
Int
,
data
:
TbGoodsItemEntity
?)
{
// JumpUtils.TbGoodsDetailJump()
var
intent
=
Intent
();
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
)
intent
.
putExtra
(
"goods"
,
data
)
intent
.
setClass
(
activity
!!
,
TbGoodsDetailActivity
().
javaClass
)
activity
?.
startActivity
(
intent
)
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/presenter/HomeRecommendPresenter.kt
View file @
5050b9cb
package
com.zxbw.modulemain.presenter
import
android.content.Context
import
android.text.TextUtils
import
android.util.Log
import
com.zxbw.modulemain.contract.HomeRecommendContract
import
com.zxbw.modulemain.contract.LoginContract
import
com.zxhl.cms.net.ApiClient
import
com.zxhl.cms.net.RxSchedulers
import
com.zxhl.cms.net.SettingPreference
import
com.zxhl.cms.net.callback.BaseObserver
import
com.zxhl.cms.net.model.qy.JgqQyEntity
import
com.zxhl.cms.net.model.uc.UserInfo
import
com.zxhl.cms.utils.EventUtils
import
com.zxhl.cms.utils.UserDataUtils
import
com.zxhl.cms.net.model.qy.TbGoodsEntity
/**
* 推荐
*/
class
HomeRecommendPresenter
:
HomeRecommendContract
.
Presenter
{
class
HomeRecommendPresenter
:
HomeRecommendContract
.
Presenter
{
private
val
mView
:
HomeRecommendContract
.
View
...
...
@@ -25,17 +19,67 @@ class HomeRecommendPresenter:HomeRecommendContract.Presenter {
this
.
mView
=
mView
}
override
fun
getQyCardList
()
{
override
fun
getQyCardList
(
tabName
:
String
)
{
if
(
tabName
!=
"推荐"
)
{
mView
.
setQyCardList
(
null
)
return
}
ApiClient
.
homeApi
.
getQyJgqCardList
().
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
List
<
JgqQyEntity
>>()
{
override
fun
onSuccess
(
result
:
List
<
JgqQyEntity
>?)
{
if
(!
result
.
isNullOrEmpty
()){
mView
.
setQyCardList
(
result
)
mView
.
setQyCardList
(
result
)
}
override
fun
onFailure
(
e
:
Throwable
?,
code
:
String
?,
errorMsg
:
String
?)
{
mView
.
setQyCardList
(
null
)
}
})
}
private
var
searchPage
=
1
;
private
var
pageSize
=
20
;
override
fun
getTbGoodsList
(
isRefresh
:
Boolean
,
cate
:
String
)
{
if
(
isRefresh
)
{
searchPage
=
1
;
}
ApiClient
.
homeApi
.
getGoodsListSearch
(
cate
,
cate
,
searchPage
,
pageSize
)
.
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
TbGoodsEntity
>()
{
override
fun
onSuccess
(
result
:
TbGoodsEntity
?)
{
if
(
result
!=
null
)
{
searchPage
++;
mView
.
setTbGoodsList
(
isRefresh
,
result
.
result_list
)
}
else
{
mView
.
setTbGoodsList
(
isRefresh
,
null
)
}
}
override
fun
onFailure
(
e
:
Throwable
?,
code
:
String
?,
errorMsg
:
String
?)
{
Log
.
d
(
"wxw"
,
"code$code"
)
mView
.
setTbGoodsList
(
isRefresh
,
null
)
}
})
}
private
var
guessLikePage
=
1
;
override
fun
getGuessLikeGoodsList
(
isRefresh
:
Boolean
)
{
if
(
isRefresh
)
{
guessLikePage
=
1
;
}
ApiClient
.
homeApi
.
getGoodsGuessLike
(
guessLikePage
,
pageSize
)
.
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
TbGoodsEntity
>()
{
override
fun
onSuccess
(
result
:
TbGoodsEntity
?)
{
if
(
result
!=
null
)
{
guessLikePage
++;
mView
.
setTbGoodsList
(
isRefresh
,
result
.
data
)
}
else
{
mView
.
setTbGoodsList
(
isRefresh
,
null
)
}
}
override
fun
onFailure
(
e
:
Throwable
?,
code
:
String
?,
errorMsg
:
String
?)
{
mView
.
setTbGoodsList
(
isRefresh
,
null
)
}
})
}
...
...
moduleMain/src/main/java/com/zxbw/modulemain/presenter/TbGoodsDetailPresenter.kt
0 → 100644
View file @
5050b9cb
package
com.zxbw.modulemain.presenter
import
android.app.Activity
import
android.text.TextUtils
import
android.util.Log
import
com.zxbw.modulemain.contract.RightsPayContract
import
com.zxbw.modulemain.contract.TbGoodsDetailContract
import
com.zxhl.cms.AppContext
import
com.zxhl.cms.net.ApiClient
import
com.zxhl.cms.net.RxSchedulers
import
com.zxhl.cms.net.SettingPreference
import
com.zxhl.cms.net.callback.BaseObserver
import
com.zxhl.cms.net.model.box.AppInEntity
import
com.zxhl.cms.net.model.box.BoxInfoEntity
import
com.zxhl.cms.net.model.box.VerifacationEntity
import
com.zxhl.cms.net.model.qy.TbGoodsEntity
import
com.zxhl.cms.net.model.uc.AliPayEntity
import
com.zxhl.cms.net.model.uc.PayMinEntity
import
com.zxhl.cms.net.model.uc.PayVerifyEntity
import
com.zxhl.cms.net.model.uc.WeChatPayEntity
import
com.zxhl.cms.net.model.video.MemberEntity
import
com.zxhl.cms.pay.alipay.AlipayServer
import
com.zxhl.cms.utils.EventUtils
import
com.zxhl.cms.utils.JumpUtils
import
com.zxhl.cms.utils.UserDataUtils
import
com.zxhl.cms.utils.WeChatPay
import
org.json.JSONObject
/**
*商品详情
*/
class
TbGoodsDetailPresenter
:
TbGoodsDetailContract
.
Presenter
{
private
val
mView
:
TbGoodsDetailContract
.
View
constructor
(
mView
:
TbGoodsDetailContract
.
View
)
{
this
.
mView
=
mView
}
override
fun
getConvertLink
(
link
:
String
)
{
ApiClient
.
homeApi
.
getGoodsConvertLink
(
link
)
.
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
TbGoodsEntity
>()
{
override
fun
onSuccess
(
result
:
TbGoodsEntity
?)
{
}
override
fun
onFailure
(
e
:
Throwable
?,
code
:
String
?,
errorMsg
:
String
?)
{
}
})
}
override
fun
getGoodsDetail
(
productId
:
String
)
{
ApiClient
.
homeApi
.
getGoodsImgDetail
(
productId
)
.
compose
(
RxSchedulers
.
observableIO2Main
())
.
subscribe
(
object
:
BaseObserver
<
TbGoodsEntity
>()
{
override
fun
onSuccess
(
result
:
TbGoodsEntity
?)
{
}
override
fun
onFailure
(
e
:
Throwable
?,
code
:
String
?,
errorMsg
:
String
?)
{
}
})
}
}
\ No newline at end of file
moduleMain/src/main/java/com/zxbw/modulemain/view/ViewPagerForRecyclerView.java
0 → 100644
View file @
5050b9cb
package
com
.
zxbw
.
modulemain
.
view
;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.view.View
;
import
androidx.viewpager.widget.ViewPager
;
/**
* @author (wangXuewei)
* @datetime 2022-05-27 03:20 GMT+8
* @detail :
*/
public
class
ViewPagerForRecyclerView
extends
ViewPager
{
public
ViewPagerForRecyclerView
(
Context
context
)
{
super
(
context
);
}
public
ViewPagerForRecyclerView
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
}
@Override
protected
void
onMeasure
(
int
widthMeasureSpec
,
int
heightMeasureSpec
)
{
int
height
=
0
;
for
(
int
i
=
0
;
i
<
getChildCount
();
i
++)
{
View
child
=
getChildAt
(
i
);
child
.
measure
(
widthMeasureSpec
,
MeasureSpec
.
makeMeasureSpec
(
0
,
MeasureSpec
.
UNSPECIFIED
));
int
h
=
child
.
getMeasuredHeight
();
if
(
h
>
height
)
height
=
h
;
}
heightMeasureSpec
=
MeasureSpec
.
makeMeasureSpec
(
height
,
MeasureSpec
.
EXACTLY
);
super
.
onMeasure
(
widthMeasureSpec
,
heightMeasureSpec
);
}
}
moduleMain/src/main/res/layout/activity_layout_tb_goods_detail.xml
View file @
5050b9cb
...
...
@@ -2,6 +2,7 @@
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:background=
"#F6F6F6"
>
<View
...
...
@@ -22,14 +23,10 @@
<RelativeLayout
android:id=
"@+id/id_rl_top_view"
android:layout_width=
"match_parent"
android:visibility=
"gone"
android:layout_height=
"360dp"
android:background=
"@drawable/img_tb_goods_detail_title_bg"
>
<androidx.viewpager.widget.ViewPager
android:id=
"@+id/id_detail_top_viewpager"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<TextView
android:id=
"@+id/id_tv_detail_title"
android:layout_width=
"wrap_content"
...
...
@@ -103,6 +100,22 @@
android:textSize=
"18sp"
android:textStyle=
"bold"
/>
</RelativeLayout>
<!-- 商品图片信息-->
<RelativeLayout
android:id=
"@+id/id_rl_top_view2"
android:layout_width=
"match_parent"
android:layout_height=
"360dp"
>
<com.zhpan.bannerview.BannerViewPager
android:id=
"@+id/id_detail_top_banner"
android:layout_width=
"match_parent"
app:bvp_can_loop=
"false"
app:bvp_indicator_visibility=
"gone"
app:bvp_auto_play=
"false"
android:layout_height=
"match_parent"
/>
<TextView
android:id=
"@+id/id_tv_vp_index"
android:layout_width=
"wrap_content"
...
...
@@ -119,7 +132,6 @@
android:textColor=
"@color/white"
android:textSize=
"14sp"
/>
</RelativeLayout>
<ImageView
android:id=
"@+id/id_img_close_btn"
android:layout_width=
"wrap_content"
...
...
@@ -132,7 +144,7 @@
android:id=
"@+id/id_rl_price_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/id_rl_top_view"
android:layout_below=
"@+id/id_rl_top_view
2
"
android:background=
"@color/white"
>
<LinearLayout
...
...
moduleMain/src/main/res/layout/fragment_layout_home.xml
View file @
5050b9cb
...
...
@@ -22,10 +22,32 @@
tl:layout_scrollFlags=
"scroll|exitUntilCollapsed"
tl:titleEnabled=
"false"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"280dp"
>
<androidx.viewpager.widget.ViewPager
android:id=
"@+id/id_home_top_banner"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<com.zhpan.indicator.IndicatorView
android:id=
"@+id/indicator_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
tl:vpi_slider_checked_color=
"@color/white"
tl:vpi_slider_normal_color=
"#80ffffff"
tl:vpi_slider_radius=
"3dp"
android:layout_marginBottom=
"50dp"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_top_banner"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
android:layout_height=
"wrap_content"
/>
<androidx.appcompat.widget.Toolbar
android:layout_width=
"match_parent"
...
...
@@ -51,7 +73,8 @@
android:layout_below=
"@+id/id_title_sys_bar_view"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
android:background=
"@drawable/shape_ffffff_r20"
>
android:background=
"@drawable/shape_ffffff_r20"
android:visibility=
"gone"
>
<TextView
android:layout_width=
"wrap_content"
...
...
moduleMain/src/main/res/layout/fragment_layout_recommend.xml
View file @
5050b9cb
...
...
@@ -6,97 +6,15 @@
android:background=
"#F8F8F8"
>
<androidx.core.widget.NestedScrollView
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id=
"@+id/id_refresh_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<LinearLayout
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_goods_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_jgq_qy_list"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<LinearLayout
android:id=
"@+id/id_ll_zero_buy_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"16dp"
android:background=
"@drawable/shape_f25e47_r15"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"12dp"
android:layout_marginTop=
"10dp"
android:layout_marginRight=
"12dp"
android:layout_marginBottom=
"10dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"新人首单0元购"
android:textColor=
"@color/white"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
<View
android:layout_width=
"1dp"
android:layout_height=
"12dp"
android:layout_marginLeft=
"10dp"
android:layout_marginRight=
"10dp"
android:background=
"#80ffffff"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:text=
"限时限量抢好物"
android:textColor=
"@color/white"
android:textSize=
"12sp"
android:textStyle=
"bold"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"20dp"
android:background=
"@drawable/shape_ffffff_r10"
android:gravity=
"center"
android:paddingLeft=
"9dp"
android:paddingRight=
"8dp"
android:text=
"查看更多 >"
android:textColor=
"#F25E47"
android:textSize=
"12sp"
android:textStyle=
"bold"
/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_zero_buy_goods"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"12dp"
/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_goods_list"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
android:layout_height=
"match_parent"
/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</RelativeLayout>
\ No newline at end of file
moduleMain/src/main/res/layout/item_layout_detail_banner.xml
0 → 100644
View file @
5050b9cb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/id_ll_detail_item"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
>
<ImageView
android:id=
"@+id/id_img_detail_banner_bg"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:scaleType=
"centerCrop"
/>
</LinearLayout>
moduleMain/src/main/res/layout/item_layout_goods_view.xml
View file @
5050b9cb
...
...
@@ -5,6 +5,8 @@
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginBottom=
"10dp"
android:layout_marginLeft=
"15dp"
android:layout_marginRight=
"15dp"
android:background=
"@drawable/shape_ffffff_r10"
android:gravity=
"center_horizontal"
android:orientation=
"horizontal"
...
...
moduleMain/src/main/res/layout/item_layout_home_banner.xml
View file @
5050b9cb
...
...
@@ -2,7 +2,7 @@
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/id_ll_item"
android:layout_width=
"match_parent"
android:layout_height=
"
wrap_cont
ent"
android:layout_height=
"
match_par
ent"
android:orientation=
"horizontal"
>
<ImageView
...
...
moduleMain/src/main/res/layout/item_layout_home_qy_grid_view.xml
0 → 100644
View file @
5050b9cb
<?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=
"wrap_content"
android:orientation=
"horizontal"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_home_jgq_qy_grid_list"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
</RelativeLayout>
\ No newline at end of file
moduleMain/src/main/res/layout/item_layout_home_qy_view.xml
0 → 100644
View file @
5050b9cb
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/id_rl_home_qy_item_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginBottom=
"20dp"
android:background=
"@color/white"
android:gravity=
"center_horizontal"
android:orientation=
"horizontal"
>
<com.zxbw.modulemain.view.ViewPagerForRecyclerView
android:id=
"@+id/id_vp_home_jgq_qy_list"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<com.zhpan.indicator.IndicatorView
android:id=
"@+id/id_qy_indicator_view"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:layout_alignBottom=
"@+id/id_vp_home_jgq_qy_list"
app:vpi_slider_checked_color=
"#F1352C"
app:vpi_slider_normal_color=
"#E8DFDF"
app:vpi_slider_radius=
"3dp"
/>
</RelativeLayout>
\ No newline at end of file
moduleMain/src/main/res/layout/item_layout_home_zero_buy_view.xml
0 → 100644
View file @
5050b9cb
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/id_rl_home_zero_buy_item_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginBottom=
"10dp"
android:background=
"@drawable/shape_ffffff_r10"
android:gravity=
"center_horizontal"
android:orientation=
"horizontal"
android:padding=
"10dp"
>
<LinearLayout
android:id=
"@+id/id_ll_zero_buy_view"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_margin=
"16dp"
android:background=
"@drawable/shape_f25e47_r15"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"12dp"
android:layout_marginTop=
"10dp"
android:layout_marginRight=
"12dp"
android:layout_marginBottom=
"10dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"新人首单0元购"
android:textColor=
"@color/white"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
<View
android:layout_width=
"1dp"
android:layout_height=
"12dp"
android:layout_marginLeft=
"10dp"
android:layout_marginRight=
"10dp"
android:background=
"#80ffffff"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:text=
"限时限量抢好物"
android:textColor=
"@color/white"
android:textSize=
"12sp"
android:textStyle=
"bold"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"20dp"
android:background=
"@drawable/shape_ffffff_r10"
android:gravity=
"center"
android:paddingLeft=
"9dp"
android:paddingRight=
"8dp"
android:text=
"查看更多 >"
android:textColor=
"#F25E47"
android:textSize=
"12sp"
android:textStyle=
"bold"
/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/id_rcl_zero_buy_goods"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"12dp"
/>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
moduleMain/src/main/res/layout/item_layout_jgq_qy_view.xml
View file @
5050b9cb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/id_ll_qy_item_view"
android:layout_width=
"
wrap_cont
ent"
android:layout_width=
"
match_par
ent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"12dp"
android:layout_marginTop=
"10dp"
android:layout_marginRight=
"12dp"
android:layout_marginBottom=
"10dp"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment