Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
ShenghuoquanBusiness
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
ShenghuoquanBusiness
Commits
14393818
Commit
14393818
authored
Aug 25, 2021
by
yinjiacheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add 选择自提点下拉刷新和上拉加载更多逻辑
parent
72e4725b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
120 additions
and
24 deletions
+120
-24
SelectPickupPointActivity.kt
...idian/shenghuoquan/border/ui/SelectPickupPointActivity.kt
+45
-10
SelectPickupPointViewModel.kt
...enghuoquan/border/viewmodel/SelectPickupPointViewModel.kt
+53
-7
border_activity_select_pickup_point.xml
...c/main/res/layout/border_activity_select_pickup_point.xml
+19
-5
border_view_pickup_point_search.xml
...r/src/main/res/layout/border_view_pickup_point_search.xml
+3
-2
No files found.
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/ui/SelectPickupPointActivity.kt
View file @
14393818
...
...
@@ -10,6 +10,7 @@ import com.yidian.bcommon.mvvm.BaseMvvmActivity
import
com.yidian.shenghuoquan.border.R
import
com.yidian.shenghuoquan.border.adapter.PickupPointListAdapter
import
com.yidian.shenghuoquan.border.databinding.BorderActivitySelectPickupPointBinding
import
com.yidian.shenghuoquan.border.dto.PickupPointListDto
import
com.yidian.shenghuoquan.border.viewmodel.SelectPickupPointViewModel
import
com.yidian.xarc.xevent.XBaseEvent
import
com.yidian.xarc.xevent.XEventManager
...
...
@@ -34,6 +35,11 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
}
}
/**
* 搜索关键字
*/
private
var
keyWords
:
String
?
=
null
override
fun
getXPageName
():
String
{
return
XRouterPathConstants
.
PICKUP_POINT_ACTIVITY
}
...
...
@@ -41,6 +47,8 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
XEventManager
.
register
(
this
)
// 标记是否有当前位置
binding
.
location
=
params
?.
get
(
IntentConstants
.
KEY_EXTRA_LONGITUDE
)
!=
null
&&
params
?.
get
(
IntentConstants
.
KEY_EXTRA_LATITUDE
)
!=
null
}
override
fun
onDestroy
()
{
...
...
@@ -50,8 +58,9 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
override
fun
initView
()
{
initRecyclerView
()
initSmartRefresh
()
registerUIEvent
()
requestPickupPoint
(
null
)
requestPickupPoint
(
SelectPickupPointViewModel
.
LoadType
.
SEARCH
)
}
private
fun
initRecyclerView
()
{
...
...
@@ -60,26 +69,50 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
binding
.
rvPickupPointList
.
addItemDecoration
(
PickupPointListAdapter
.
PickupPointListItemDecoration
())
}
private
fun
initSmartRefresh
()
{
binding
.
rlPickupPointList
.
setOnRefreshListener
{
requestPickupPoint
(
SelectPickupPointViewModel
.
LoadType
.
REFRESH
)
}
binding
.
rlPickupPointList
.
setOnLoadMoreListener
{
requestPickupPoint
(
SelectPickupPointViewModel
.
LoadType
.
LOAD_MORE
)
}
}
/**
* 注册UI事件监听
*/
private
fun
registerUIEvent
()
{
vm
.
pickupPointListData
.
observe
(
this
,
{
// 标记当前选中的自提点
adapter
.
setSelectedId
(
params
?.
get
(
IntentConstants
.
KEY_EXTRA_PICKUP_POINT_ID
)
?.
let
{
id
->
id
as
Long
})
adapter
.
updateData
(
it
.
list
)
vm
.
pickupPointListSearch
.
observe
(
this
,
{
updateData
(
it
)
})
vm
.
pickupPointListRefresh
.
observe
(
this
,
{
binding
.
rlPickupPointList
.
finishRefresh
(
it
!=
null
)
updateData
(
it
)
})
vm
.
pickupPointListLoadMore
.
observe
(
this
,
{
binding
.
rlPickupPointList
.
finishLoadMore
(
it
!=
null
)
updateData
(
it
)
})
}
/**
* 更新列表数据
*/
private
fun
updateData
(
data
:
PickupPointListDto
?)
{
// 标记当前选中的自提点
adapter
.
setSelectedId
(
params
?.
get
(
IntentConstants
.
KEY_EXTRA_PICKUP_POINT_ID
)
?.
let
{
id
->
id
as
Long
})
adapter
.
updateData
(
data
?.
list
)
}
/**
* 请求
附近自提点
* 请求
自提点列表
*/
private
fun
requestPickupPoint
(
keyWords
:
String
?
)
{
private
fun
requestPickupPoint
(
type
:
SelectPickupPointViewModel
.
LoadType
)
{
vm
.
requestPickupPointList
(
params
?.
get
(
IntentConstants
.
KEY_EXTRA_MARKETING_ID
)
as
String
,
params
?.
get
(
IntentConstants
.
KEY_EXTRA_LONGITUDE
)
?.
let
{
it
as
Double
},
params
?.
get
(
IntentConstants
.
KEY_EXTRA_LATITUDE
)
?.
let
{
it
as
Double
},
keyWords
keyWords
,
type
)
}
...
...
@@ -87,12 +120,14 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
fun
onEvent
(
event
:
XBaseEvent
?)
{
when
(
event
?.
name
)
{
XEventConfig
.
SEARCH_PICKUP_POINT_CANCEL
->
{
keyWords
=
null
// 取消搜索自提点 请求附近自提点
requestPickupPoint
(
null
)
requestPickupPoint
(
SelectPickupPointViewModel
.
LoadType
.
SEARCH
)
}
XEventConfig
.
SEARCH_PICKUP_POINT_START
->
{
keyWords
=
event
.
body
as
String
// 开始搜索自提点
requestPickupPoint
(
event
.
body
as
String
)
requestPickupPoint
(
SelectPickupPointViewModel
.
LoadType
.
SEARCH
)
}
}
}
...
...
Components/BOrder/src/main/java/com/yidian/shenghuoquan/border/viewmodel/SelectPickupPointViewModel.kt
View file @
14393818
...
...
@@ -14,32 +14,78 @@ import com.yidian.shenghuoquan.border.http.callback.IGetPickupPointListCallback
*/
class
SelectPickupPointViewModel
:
BaseViewModel
()
{
private
val
_pickupPointListData
=
MutableLiveData
<
PickupPointListDto
>()
val
pickupPointListData
:
LiveData
<
PickupPointListDto
>
=
_pickupPointListData
private
val
_pickupPointListSearch
=
MutableLiveData
<
PickupPointListDto
?>()
val
pickupPointListSearch
:
LiveData
<
PickupPointListDto
?>
=
_pickupPointListSearch
private
val
_pickupPointListRefresh
=
MutableLiveData
<
PickupPointListDto
?>()
val
pickupPointListRefresh
:
LiveData
<
PickupPointListDto
?>
=
_pickupPointListRefresh
private
val
_pickupPointListLoadMore
=
MutableLiveData
<
PickupPointListDto
?>()
val
pickupPointListLoadMore
:
LiveData
<
PickupPointListDto
?>
=
_pickupPointListLoadMore
/**
* 记录分页请求下一页
*/
private
var
nextPage
=
2
/**
* 请求自提点列表
*/
fun
requestPickupPointList
(
marketingId
:
String
,
longitude
:
Double
?,
latitude
:
Double
?,
keyWords
:
String
?)
{
fun
requestPickupPointList
(
marketingId
:
String
,
longitude
:
Double
?,
latitude
:
Double
?,
keyWords
:
String
?,
type
:
LoadType
,
page
:
Int
=
1
,
limit
:
Int
=
20
,
)
{
val
requestParams
=
HashMap
<
String
,
String
?>(
6
)
requestParams
[
"marketing_id"
]
=
marketingId
longitude
?.
let
{
requestParams
[
"longitude"
]
=
it
.
toString
()
}
latitude
?.
let
{
requestParams
[
"latitude"
]
=
it
.
toString
()
}
if
(
keyWords
?.
isNotEmpty
()
==
true
)
requestParams
[
"keywords"
]
=
keyWords
requestParams
[
"page"
]
=
"1"
requestParams
[
"limit"
]
=
"20"
if
(
type
==
LoadType
.
SEARCH
||
type
==
LoadType
.
REFRESH
)
{
requestParams
[
"page"
]
=
page
.
toString
()
}
else
{
requestParams
[
"page"
]
=
nextPage
.
toString
()
}
requestParams
[
"limit"
]
=
limit
.
toString
()
OrderRemoteDataSource
.
getPickupPointList
(
object
:
IGetPickupPointListCallback
{
override
fun
getPickupPointListSuccess
(
result
:
PickupPointListDto
?)
{
result
?.
let
{
_pickupPointListData
.
value
=
it
}
if
(
type
==
LoadType
.
SEARCH
||
type
==
LoadType
.
REFRESH
)
nextPage
=
2
else
nextPage
++
when
(
type
)
{
LoadType
.
SEARCH
->
_pickupPointListSearch
.
value
=
result
LoadType
.
REFRESH
->
_pickupPointListRefresh
.
value
=
result
LoadType
.
LOAD_MORE
->
_pickupPointListLoadMore
.
value
=
result
}
}
override
fun
getPickupPointListFailure
(
message
:
String
?)
{
when
(
type
)
{
LoadType
.
SEARCH
->
_pickupPointListSearch
.
value
=
null
LoadType
.
REFRESH
->
_pickupPointListRefresh
.
value
=
null
LoadType
.
LOAD_MORE
->
_pickupPointListLoadMore
.
value
=
null
}
}
},
requestParams
)
}
/**
* 列表加载类型
*/
enum
class
LoadType
{
// 搜索
SEARCH
,
// 下拉刷新
REFRESH
,
// 上拉加载更多
LOAD_MORE
}
}
Components/BOrder/src/main/res/layout/border_activity_select_pickup_point.xml
View file @
14393818
...
...
@@ -4,10 +4,16 @@
<data>
<import
type=
"android.view.View"
/>
<variable
name=
"vm"
type=
"com.yidian.shenghuoquan.border.viewmodel.SelectPickupPointViewModel"
/>
<variable
name=
"location"
type=
"Boolean"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
...
...
@@ -43,11 +49,12 @@
android:text=
"@string/nearby_pickup_point"
android:textColor=
"@color/color_333333"
android:textSize=
"@dimen/sp16"
android:visibility=
"@{location ? View.VISIBLE : View.GONE}"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/sv_pickup_point_search"
/>
<
androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/r
v
_pickup_point_list"
<
com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id=
"@+id/r
l
_pickup_point_list"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginStart=
"@dimen/dp16"
...
...
@@ -55,10 +62,17 @@
android:layout_marginEnd=
"@dimen/dp16"
android:layout_marginBottom=
"@dimen/dp20"
android:background=
"@drawable/shape_solid_ffffff_corner_20"
android:paddingStart=
"@dimen/dp16"
android:paddingEnd=
"@dimen/dp16"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tv_nearby_pickup_point"
/>
app:layout_constraintTop_toBottomOf=
"@id/tv_nearby_pickup_point"
>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_pickup_point_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingStart=
"@dimen/dp16"
android:paddingEnd=
"@dimen/dp16"
/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
Components/BOrder/src/main/res/layout/border_view_pickup_point_search.xml
View file @
14393818
...
...
@@ -39,14 +39,15 @@
android:background=
"@null"
android:hint=
"@string/search_pickup_point"
android:imeOptions=
"actionSearch"
android:maxLines=
"1"
android:inputType=
"text"
android:maxLines=
"1"
android:textColor=
"@color/color_333333"
android:textColorHint=
"@color/color_666666"
android:textCursorDrawable=
"@drawable/shape_bg_input_cursor"
android:textSize=
"@dimen/sp14"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toEndOf=
"@id/iv_search"
app:layout_constraintEnd_toStartOf=
"@id/iv_clear"
app:layout_constraintStart_toEndOf=
"@id/iv_search"
app:layout_constraintTop_toTopOf=
"parent"
/>
<ImageView
...
...
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