Commit 6fbbb053 authored by yinjiacheng's avatar yinjiacheng

fix SHQCLIENT-1618 选择自提点页 1.增加取消按钮 2.增加无数据缺省页

parent 75126e63
...@@ -26,10 +26,6 @@ class XEventConfig { ...@@ -26,10 +26,6 @@ class XEventConfig {
const val CONFIRM_ORDER_CHOOSE_POINT_SUCCESS = "confirm_order_choose_point_success" const val CONFIRM_ORDER_CHOOSE_POINT_SUCCESS = "confirm_order_choose_point_success"
// 确认订单选择优惠券成功 // 确认订单选择优惠券成功
const val CONFIRM_ORDER_CHOOSE_COUPON_SUCCESS = "confirm_order_choose_coupon_success" const val CONFIRM_ORDER_CHOOSE_COUPON_SUCCESS = "confirm_order_choose_coupon_success"
// 取消搜索自提点
const val SEARCH_PICKUP_POINT_CANCEL = "search_pickup_point_cancel"
// 开始搜索自提点
const val SEARCH_PICKUP_POINT_START = "search_pickup_point_start"
// C端登录成功 // C端登录成功
const val CLIENT_C_LOGIN_SUCCESS = "client_c_login_success" const val CLIENT_C_LOGIN_SUCCESS = "client_c_login_success"
// 通知h5刷新团餐拼团活动详情 // 通知h5刷新团餐拼团活动详情
......
package com.yidian.shenghuoquan.buserorder.ui package com.yidian.shenghuoquan.buserorder.ui
import android.os.Bundle
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.bcommon.constant.IntentConstants import com.yidian.bcommon.constant.IntentConstants
import com.yidian.bcommon.constant.XEventConfig
import com.yidian.bcommon.constant.XRouterPathConstants import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.mvvm.BaseMvvmActivity import com.yidian.bcommon.mvvm.BaseMvvmActivity
import com.yidian.bcommon.services.ZapServiceActionConstants import com.yidian.bcommon.services.ZapServiceActionConstants
...@@ -13,13 +11,10 @@ import com.yidian.shenghuoquan.buserorder.R ...@@ -13,13 +11,10 @@ import com.yidian.shenghuoquan.buserorder.R
import com.yidian.shenghuoquan.buserorder.adapter.PickupPointListAdapter import com.yidian.shenghuoquan.buserorder.adapter.PickupPointListAdapter
import com.yidian.shenghuoquan.buserorder.databinding.BorderActivitySelectPickupPointBinding import com.yidian.shenghuoquan.buserorder.databinding.BorderActivitySelectPickupPointBinding
import com.yidian.shenghuoquan.buserorder.dto.PickupPointListDto import com.yidian.shenghuoquan.buserorder.dto.PickupPointListDto
import com.yidian.shenghuoquan.buserorder.ui.widget.PickupPointSearchView
import com.yidian.shenghuoquan.buserorder.viewmodel.SelectPickupPointViewModel import com.yidian.shenghuoquan.buserorder.viewmodel.SelectPickupPointViewModel
import com.yidian.xarc.xevent.XBaseEvent
import com.yidian.xarc.xevent.XEventManager
import com.yidian.xpage.XPageViewProtocol import com.yidian.xpage.XPageViewProtocol
import com.yidian.yac.core.zap.ZapTicket import com.yidian.yac.core.zap.ZapTicket
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import org.json.JSONObject import org.json.JSONObject
/** /**
...@@ -28,7 +23,7 @@ import org.json.JSONObject ...@@ -28,7 +23,7 @@ import org.json.JSONObject
* description: 选择自提点页 * description: 选择自提点页
*/ */
class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPointBinding, SelectPickupPointViewModel>(), class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPointBinding, SelectPickupPointViewModel>(),
XPageViewProtocol { XPageViewProtocol, PickupPointSearchView.OnPickupPointSearchCallback {
override val layoutId = R.layout.border_activity_select_pickup_point override val layoutId = R.layout.border_activity_select_pickup_point
override val vm: SelectPickupPointViewModel by viewModels() override val vm: SelectPickupPointViewModel by viewModels()
...@@ -43,23 +38,14 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi ...@@ -43,23 +38,14 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
/** /**
* 搜索关键字 * 搜索关键字
*/ */
private var keyWords: String? = null private var keywords: String? = null
override fun getXPageName(): String { override fun getXPageName(): String {
return XRouterPathConstants.PICKUP_POINT_ACTIVITY return XRouterPathConstants.PICKUP_POINT_ACTIVITY
} }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
XEventManager.register(this)
}
override fun onDestroy() {
super.onDestroy()
XEventManager.unRegister(this)
}
override fun initView() { override fun initView() {
binding.svPickupPointSearch.initPickupPointSearch(this)
initRecyclerView() initRecyclerView()
initSmartRefresh() initSmartRefresh()
registerUIEvent() registerUIEvent()
...@@ -103,6 +89,8 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi ...@@ -103,6 +89,8 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
// 是否有位置信息 控制距离显示 // 是否有位置信息 控制距离显示
adapter.setLocation(location) adapter.setLocation(location)
adapter.updateData(data.list) adapter.updateData(data.list)
// 是否有自提点数据
binding.data = data.list.isNotEmpty()
} }
/** /**
...@@ -119,23 +107,19 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi ...@@ -119,23 +107,19 @@ class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPoi
location = longitude != 0.0 && latitude != 0.0 location = longitude != 0.0 && latitude != 0.0
// 是否有位置信息 控制附近自提点显示 // 是否有位置信息 控制附近自提点显示
binding.location = location binding.location = location
vm.requestPickupPointList(params?.get(IntentConstants.KEY_EXTRA_MARKETING_ID) as String, longitude, latitude, keyWords, type) vm.requestPickupPointList(params?.get(IntentConstants.KEY_EXTRA_MARKETING_ID) as String, longitude, latitude, keywords, type)
}.ship() }.ship()
} }
@Subscribe(sticky = false, threadMode = ThreadMode.MAIN) override fun onStartSearch(keywords: String) {
fun onEvent(event: XBaseEvent?) { this.keywords = keywords
when (event?.name) {
XEventConfig.SEARCH_PICKUP_POINT_CANCEL -> {
keyWords = null
// 取消搜索自提点 请求附近自提点
requestPickupPoint(SelectPickupPointViewModel.LoadType.SEARCH)
}
XEventConfig.SEARCH_PICKUP_POINT_START -> {
keyWords = event.body as String
// 开始搜索自提点 // 开始搜索自提点
requestPickupPoint(SelectPickupPointViewModel.LoadType.SEARCH) requestPickupPoint(SelectPickupPointViewModel.LoadType.SEARCH)
} }
}
override fun onCancelSearch() {
keywords = null
// 取消搜索自提点 请求附近自提点
requestPickupPoint(SelectPickupPointViewModel.LoadType.SEARCH)
} }
} }
...@@ -8,12 +8,9 @@ import android.view.inputmethod.InputMethodManager ...@@ -8,12 +8,9 @@ import android.view.inputmethod.InputMethodManager
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import com.yidian.bcommon.constant.XEventConfig
import com.yidian.shenghuoquan.buserorder.R import com.yidian.shenghuoquan.buserorder.R
import com.yidian.shenghuoquan.buserorder.databinding.BorderViewPickupPointSearchBinding import com.yidian.shenghuoquan.buserorder.databinding.BorderViewPickupPointSearchBinding
import com.yidian.shenghuoquan.buserorder.viewmodel.PickupPointSearchViewModel import com.yidian.shenghuoquan.buserorder.viewmodel.PickupPointSearchViewModel
import com.yidian.xarc.xevent.XBaseEvent
import com.yidian.xarc.xevent.XEventManager
/** /**
* author: yinjiacheng * author: yinjiacheng
...@@ -30,21 +27,22 @@ class PickupPointSearchView @JvmOverloads constructor(context: Context, attrs: A ...@@ -30,21 +27,22 @@ class PickupPointSearchView @JvmOverloads constructor(context: Context, attrs: A
true true
) )
private val vm by lazy { PickupPointSearchViewModel() } private val vm by lazy { PickupPointSearchViewModel() }
private var callback: OnPickupPointSearchCallback? = null
init { fun initPickupPointSearch(callback: OnPickupPointSearchCallback?) {
binding.vm = vm binding.vm = vm
registerUIEvent() this.callback = callback
initView() initView()
registerUIEvent()
} }
private fun initView() { private fun initView() {
binding.etSearch.setOnEditorActionListener { v, actionId, _ -> binding.etSearch.setOnEditorActionListener { v, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) { if (actionId == EditorInfo.IME_ACTION_SEARCH) {
// 隐藏软键盘 // 隐藏软键盘
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager hideKeyboard()
imm.hideSoftInputFromWindow(windowToken, 0) // 回调开始搜索
// 通知开始搜索 callback?.onStartSearch(v.text.toString())
XEventManager.post(XBaseEvent(XEventConfig.SEARCH_PICKUP_POINT_START, v.text.toString()))
} }
true true
} }
...@@ -57,8 +55,37 @@ class PickupPointSearchView @JvmOverloads constructor(context: Context, attrs: A ...@@ -57,8 +55,37 @@ class PickupPointSearchView @JvmOverloads constructor(context: Context, attrs: A
vm.clearSearch.observe(context as LifecycleOwner, { vm.clearSearch.observe(context as LifecycleOwner, {
// 清空搜索框 // 清空搜索框
binding.etSearch.setText("") binding.etSearch.setText("")
// 通知取消搜索 // 回调取消搜索
XEventManager.post(XBaseEvent(XEventConfig.SEARCH_PICKUP_POINT_CANCEL, null)) callback?.onCancelSearch()
})
vm.cancelSearch.observe(context as LifecycleOwner, {
// 清空搜索框
binding.etSearch.setText("")
// 收起软键盘
hideKeyboard()
// 回调取消搜索
callback?.onCancelSearch()
}) })
} }
/**
* 收起软键盘
*/
private fun hideKeyboard() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(windowToken, 0)
}
interface OnPickupPointSearchCallback {
/**
* 开始搜索
* @param keywords 关键词
*/
fun onStartSearch(keywords: String)
/**
* 取消搜索
*/
fun onCancelSearch()
}
} }
package com.yidian.shenghuoquan.buserorder.viewmodel package com.yidian.shenghuoquan.buserorder.viewmodel
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.BindingAdapter
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.yidian.bcommon.mvvm.BaseViewModel import com.yidian.bcommon.mvvm.BaseViewModel
import com.yidian.utils.DensityUtil
/** /**
* author: yinjiacheng * author: yinjiacheng
...@@ -11,14 +15,39 @@ import com.yidian.bcommon.mvvm.BaseViewModel ...@@ -11,14 +15,39 @@ import com.yidian.bcommon.mvvm.BaseViewModel
*/ */
class PickupPointSearchViewModel : BaseViewModel() { class PickupPointSearchViewModel : BaseViewModel() {
companion object {
/**
* 设置右外边距
* @param margin 外边距 单位dp
*/
@JvmStatic
@BindingAdapter("layout_marginEnd")
fun setMarginEnd(view: View, margin: Int) {
val lp = view.layoutParams as ConstraintLayout.LayoutParams
lp.marginEnd = DensityUtil.dp2px(margin.toFloat())
view.layoutParams = lp
}
}
private val _clearSearch = MutableLiveData<Unit>() private val _clearSearch = MutableLiveData<Unit>()
val clearSearch: LiveData<Unit> = _clearSearch val clearSearch: LiveData<Unit> = _clearSearch
private val _cancelSearch = MutableLiveData<Unit>()
val cancelSearch: LiveData<Unit> = _cancelSearch
/** /**
* 清空搜索 * 清空搜索
* 请求附近自提点数据 * 清空搜索框输入 不收起软键盘 请求附近自提点数据
*/ */
fun clearSearch() { fun clearSearch() {
_clearSearch.value = Unit _clearSearch.value = Unit
} }
/**
* 取消搜索
* 清空搜索框输入 收起软键盘 请求附近自提点数据
*/
fun cancelSearch() {
_cancelSearch.value = Unit
}
} }
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
name="location" name="location"
type="Boolean" /> type="Boolean" />
<variable
name="data"
type="Boolean" />
</data> </data>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
...@@ -65,6 +69,10 @@ ...@@ -65,6 +69,10 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_nearby_pickup_point"> app:layout_constraintTop_toBottomOf="@id/tv_nearby_pickup_point">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_pickup_point_list" android:id="@+id/rv_pickup_point_list"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -73,6 +81,15 @@ ...@@ -73,6 +81,15 @@
android:paddingStart="@dimen/dp16" android:paddingStart="@dimen/dp16"
android:paddingEnd="@dimen/dp16" /> android:paddingEnd="@dimen/dp16" />
<com.yidian.bcommon.widget.CommonEmptyPageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="@{data ? View.GONE : View.VISIBLE}"
app:CommonEmptyPageView_empty_content_text="暂无对应自提点"
app:CommonEmptyPageView_place_holder_img="@drawable/bcommon_icon_nothing_place_holder" />
</FrameLayout>
</com.scwang.smart.refresh.layout.SmartRefreshLayout> </com.scwang.smart.refresh.layout.SmartRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -14,10 +14,17 @@ ...@@ -14,10 +14,17 @@
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp40" android:layout_height="@dimen/dp40">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/shape_solid_ffffff_corner_10" android:background="@drawable/shape_solid_ffffff_corner_10"
android:paddingStart="@dimen/dp9" android:paddingStart="@dimen/dp9"
android:paddingEnd="@dimen/dp8"> android:paddingEnd="@dimen/dp8"
app:layout_constraintEnd_toStartOf="@id/tv_cancel"
app:layout_constraintStart_toStartOf="parent"
app:layout_marginEnd="@{etSearch.text.length() > 0 ? 16 : 0}">
<ImageView <ImageView
android:id="@+id/iv_search" android:id="@+id/iv_search"
...@@ -61,4 +68,19 @@ ...@@ -61,4 +68,19 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> vm.cancelSearch()}"
android:text="@string/cancel"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp14"
android:visibility="@{etSearch.text.length() > 0 ? View.VISIBLE : View.GONE}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout> </layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment