Commit a0296739 authored by yinjiacheng's avatar yinjiacheng

add 选择自提点页UI

parent 74820d6d
package com.yidian.shenghuoquan.border.adapter
import android.graphics.Rect
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderItemPickupPointListBinding
import com.yidian.shenghuoquan.border.viewmodel.PickupPointListItemViewModel
import com.yidian.utils.DensityUtil
/**
* author: yinjiacheng
* date: 2021/8/24 16:57
* description: 自提点列表
*/
class PickupPointListAdapter : RecyclerView.Adapter<PickupPointListAdapter.PickupPointListViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PickupPointListViewHolder {
val binding = DataBindingUtil.inflate<BorderItemPickupPointListBinding>(
LayoutInflater.from(parent.context),
R.layout.border_item_pickup_point_list,
parent,
false
)
return PickupPointListViewHolder(binding.root, binding)
}
override fun onBindViewHolder(holder: PickupPointListViewHolder, position: Int) {
holder.binding.vm = PickupPointListItemViewModel()
}
override fun getItemCount(): Int {
return 0
}
class PickupPointListViewHolder(itemView: View, val binding: BorderItemPickupPointListBinding) : RecyclerView.ViewHolder(itemView)
class PickupPointListItemDecoration : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
outRect.top = DensityUtil.dp2px(28F)
}
}
}
......@@ -8,13 +8,14 @@ import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderActivityOrderDetailBinding
import com.yidian.shenghuoquan.border.manager.OrderStatusManager
import com.yidian.shenghuoquan.border.viewmodel.OrderDetailViewModel
import com.yidian.xpage.XPageViewProtocol
/**
* author: yinjiacheng
* date: 2021/8/21 09:29
* description: 订单详情页
*/
class OrderDetailActivity : BaseMvvmActivity<BorderActivityOrderDetailBinding, OrderDetailViewModel>() {
class OrderDetailActivity : BaseMvvmActivity<BorderActivityOrderDetailBinding, OrderDetailViewModel>(), XPageViewProtocol {
override val layoutId: Int = R.layout.border_activity_order_detail
override val vm: OrderDetailViewModel by viewModels()
......@@ -30,6 +31,10 @@ class OrderDetailActivity : BaseMvvmActivity<BorderActivityOrderDetailBinding, O
}
}
override fun getXPageName(): String {
return XRouterPathConstants.ORDER_DETAIL_ACTIVITY
}
override fun initView() {
vm.orderDetailData.observe(this, {
// 获取当前订单状态
......
package com.yidian.shenghuoquan.border.ui
import androidx.activity.viewModels
import androidx.recyclerview.widget.LinearLayoutManager
import com.yidian.bcommon.constant.XRouterPathConstants
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.viewmodel.SelectPickupPointViewModel
import com.yidian.xpage.XPageViewProtocol
/**
* author: yinjiacheng
* date: 2021/8/24 14:02
* description: 选择自提点页
*/
class SelectPickupPointActivity : BaseMvvmActivity<BorderActivitySelectPickupPointBinding, SelectPickupPointViewModel>(),
XPageViewProtocol {
override val layoutId = R.layout.border_activity_select_pickup_point
override val vm: SelectPickupPointViewModel by viewModels()
private val adapter by lazy { PickupPointListAdapter() }
override fun getXPageName(): String {
return XRouterPathConstants.PICKUP_POINT_ACTIVITY
}
override fun initView() {
initRecyclerView()
}
private fun initRecyclerView() {
binding.rvPickupPointList.adapter = adapter
binding.rvPickupPointList.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
binding.rvPickupPointList.addItemDecoration(PickupPointListAdapter.PickupPointListItemDecoration())
}
}
package com.yidian.shenghuoquan.border.ui.widget
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.inputmethod.EditorInfo
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewPickupPointSearchBinding
import com.yidian.shenghuoquan.border.viewmodel.PickupPointSearchViewModel
/**
* author: yinjiacheng
* date: 2021/8/24 15:07
* description: 自提点搜索框
*/
class PickupPointSearchView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
ConstraintLayout(context, attrs, defStyle) {
private val binding = DataBindingUtil.inflate<BorderViewPickupPointSearchBinding>(
LayoutInflater.from(getContext()),
R.layout.border_view_pickup_point_search,
this,
true
)
private val vm by lazy { PickupPointSearchViewModel() }
init {
binding.vm = vm
registerUIEvent()
initView()
}
private fun initView() {
binding.etSearch.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
// TODO: 2021/8/24 请求搜索自提点
}
false
}
}
/**
* 注册UI事件监听
*/
private fun registerUIEvent() {
vm.clearSearch.observe(context as LifecycleOwner, {
// 清空搜索框
binding.etSearch.setText("")
})
}
}
package com.yidian.shenghuoquan.border.viewmodel
import com.yidian.bcommon.mvvm.BaseViewModel
/**
* author: yinjiacheng
* date: 2021/8/24 17:19
* description: 自提点列表
*/
class PickupPointListItemViewModel : BaseViewModel() {
}
package com.yidian.shenghuoquan.border.viewmodel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.yidian.bcommon.mvvm.BaseViewModel
/**
* author: yinjiacheng
* date: 2021/8/24 15:34
* description: 自提点搜索
*/
class PickupPointSearchViewModel : BaseViewModel() {
private val _clearSearch = MutableLiveData<Unit>()
val clearSearch: LiveData<Unit> = _clearSearch
/**
* 清空搜索
* 请求附近自提点数据
*/
fun clearSearch() {
_clearSearch.value = Unit
// TODO: 2021/8/24 请求附近自提点
}
}
package com.yidian.shenghuoquan.border.viewmodel
import com.yidian.bcommon.mvvm.BaseViewModel
/**
* author: yinjiacheng
* date: 2021/8/24 14:03
* description: 自提点选择
*/
class SelectPickupPointViewModel : BaseViewModel() {
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_pickup_point_selected" android:state_checked="true" />
<item android:drawable="@drawable/icon_pickup_point_unselected" android:state_checked="false" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="@dimen/dp10" />
</shape>
\ No newline at end of file
......@@ -18,7 +18,10 @@
android:id="@+id/bv_top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:CommonTopBarView_back_img="@drawable/icon_back_white"
app:CommonTopBarView_bg_color="@color/color_F6775B"
app:CommonTopBarView_title_text="@string/order_detail"
app:CommonTopBarView_title_text_color="@color/white"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="vm"
type="com.yidian.shenghuoquan.border.viewmodel.SelectPickupPointViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.yidian.bcommon.widget.CommonTopBarView
android:id="@+id/bv_top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:CommonTopBarView_back_img="@drawable/icon_back_white"
app:CommonTopBarView_bg_color="@color/color_F6775B"
app:CommonTopBarView_title_text="@string/select_pickup_point"
app:CommonTopBarView_title_text_color="@color/white"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.border.ui.widget.PickupPointSearchView
android:id="@+id/sv_pickup_point_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp16"
android:layout_marginTop="@dimen/dp9"
android:layout_marginEnd="@dimen/dp16"
app:layout_constraintTop_toBottomOf="@id/bv_top_bar" />
<TextView
android:id="@+id/tv_nearby_pickup_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp16"
android:layout_marginTop="@dimen/dp20"
android:text="@string/nearby_pickup_point"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/sv_pickup_point_search" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_pickup_point_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="@dimen/dp16"
android:layout_marginTop="@dimen/dp20"
android:layout_marginEnd="@dimen/dp16"
android:layout_marginBottom="@dimen/dp20"
android:paddingStart="@dimen/dp16"
android:paddingEnd="@dimen/dp16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_nearby_pickup_point" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
<variable
name="vm"
type="com.yidian.shenghuoquan.border.viewmodel.PickupPointListItemViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_pickup_point_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="维多利亚3层" />
<TextView
android:id="@+id/tv_pickup_point_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/color_D66948"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_pickup_point_address"
tools:text="距您:2.7km" />
<View
android:layout_width="@dimen/dp1"
android:layout_height="@dimen/dp8"
android:background="@color/color_999999"
app:layout_constraintBottom_toBottomOf="@id/tv_pickup_point_distance"
app:layout_constraintEnd_toStartOf="@id/tv_pickup_point_address"
app:layout_constraintStart_toEndOf="@id/tv_pickup_point_distance"
app:layout_constraintTop_toTopOf="@id/tv_pickup_point_distance" />
<TextView
android:id="@+id/tv_pickup_point_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp17"
android:layout_marginTop="@dimen/dp8"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toEndOf="@id/tv_pickup_point_distance"
app:layout_constraintTop_toBottomOf="@id/tv_pickup_point_name"
tools:text="经济技术开发区燕顺路123号" />
<TextView
android:id="@+id/tv_pickup_point_contract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp8"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_pickup_point_address"
tools:text="提货点联系人:面团儿" />
<CheckBox
android:id="@+id/cb_pickup_point_select"
android:layout_width="@dimen/dp18"
android:layout_height="@dimen/dp18"
android:background="@drawable/selector_pickup_point_select"
android:button="@null"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="vm"
type="com.yidian.shenghuoquan.border.viewmodel.PickupPointSearchViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_solid_ffffff_corner_10"
android:paddingStart="@dimen/dp9"
android:paddingTop="@dimen/dp12"
android:paddingEnd="@dimen/dp9"
android:paddingBottom="@dimen/dp12">
<ImageView
android:id="@+id/iv_search"
android:layout_width="@dimen/dp16"
android:layout_height="@dimen/dp16"
android:src="@drawable/icon_search"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/et_search"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp4"
android:background="@null"
android:hint="@string/search_pickup_point"
android:imeOptions="actionSearch"
android:maxLines="1"
android:textColor="@color/color_333333"
android:textColorHint="@color/color_666666"
android:textSize="@dimen/sp14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/iv_search"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_clear"
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
android:onClick="@{() -> vm.clearSearch()}"
android:src="@drawable/icon_clear"
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>
\ No newline at end of file
......@@ -21,4 +21,8 @@
<string name="refund_time">退款时间</string>
<string name="order_remark">订单备注</string>
<string name="refuse_time">拒绝时间</string>
<string name="select_pickup_point">选择自提点</string>
<string name="search_pickup_point">搜索自提点名称/地址</string>
<string name="cancel">取消</string>
<string name="nearby_pickup_point">附近自提点</string>
</resources>
\ 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