From 94b8b36b7b4f903d6768fb719e2043094545bb71 Mon Sep 17 00:00:00 2001 From: lijia Date: Tue, 5 Nov 2024 09:06:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B4=A7=E7=89=A9=E5=88=97?= =?UTF-8?q?=E8=A1=A8=EF=BC=8C=E5=88=A0=E9=99=A4=EF=BC=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 15 +- app/src/main/AndroidManifest.xml | 5 + .../dhsd/glowner/adapter/GoodListAdapter.kt | 78 ++++++ .../com/dhsd/glowner/adapter/GoodsAdapter.kt | 2 +- .../glowner/adapter/PackingTypeAdapter2.kt | 36 +++ .../java/com/dhsd/glowner/bean/GoodBean.kt | 36 ++- app/src/main/java/com/dhsd/glowner/net/Api.kt | 2 +- .../ui/home/activtiy/GoodsInfoActivity.kt | 117 +++++++- .../ui/home/activtiy/GoodsInfoListActivity.kt | 190 +++++++++++++ .../activtiy/GoodsInfoListActivityBack.kt | 160 +++++++++++ .../ui/home/activtiy/GoodsListActivity.kt | 18 +- .../ui/home/activtiy/SendGoodsActivity.kt | 4 +- .../main/res/layout/activity_goods_info.xml | 4 +- .../res/layout/activity_goods_info_list.xml | 47 ++++ app/src/main/res/layout/item_add_good.xml | 262 ++++++++++++++++++ 15 files changed, 934 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/com/dhsd/glowner/adapter/GoodListAdapter.kt create mode 100644 app/src/main/java/com/dhsd/glowner/adapter/PackingTypeAdapter2.kt create mode 100644 app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivity.kt create mode 100644 app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivityBack.kt create mode 100644 app/src/main/res/layout/activity_goods_info_list.xml create mode 100644 app/src/main/res/layout/item_add_good.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 0c0c338..5ef8039 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -3,7 +3,20 @@ - + + + + + + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f69397..b467e84 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -127,6 +127,11 @@ android:configChanges="keyboardHidden|orientation|locale" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden" /> + (){ + + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: GoodBean?) { + val recyBz = holder.getView(recycler) + recyBz.run { + layoutManager = + FullyGridLayoutManager(context, 3, GridLayoutManager.VERTICAL, false) + addItemDecoration( + GridSpacingItemDecoration( + 3, + DensityUtil.dip2px(context, 8f), false + ) + ) + adapter = PackingTypeAdapter2(item!!.goodBz) + adapter as PackingTypeAdapter2 + }.apply { + setOnItemClickListener{adapter ,_, position -> + val itemBz = adapter.items + val indexOfFirst = itemBz.indexOfFirst { it.isCheck } + if (indexOfFirst>-1){ + if (indexOfFirst==position){ + itemBz[position].isCheck = !itemBz[position].isCheck + }else{ + itemBz[indexOfFirst].isCheck = false + itemBz[position].isCheck = true + } + }else{ + itemBz[position].isCheck = !itemBz[position].isCheck + } + adapter.notifyDataSetChanged() + +// if (indexOfFirst > -1 && indexOfFirst != position) { +// itemBz[indexOfFirst].isCheck = false +// itemBz[position].isCheck = !itemBz[position].isCheck +// notifyItemChanged(indexOfFirst) +// notifyItemChanged(position) +// } else { +// itemBz[position].isCheck = !itemBz[position].isCheck +// notifyItemChanged(position) +// } + } + + } + item?.let { + + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.item_add_good, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/adapter/GoodsAdapter.kt b/app/src/main/java/com/dhsd/glowner/adapter/GoodsAdapter.kt index eb732ef..724eb1b 100644 --- a/app/src/main/java/com/dhsd/glowner/adapter/GoodsAdapter.kt +++ b/app/src/main/java/com/dhsd/glowner/adapter/GoodsAdapter.kt @@ -18,7 +18,7 @@ class GoodsAdapter : BaseQuickAdapter() { item?.let { holder.run { setText(R.id.tvAddress, it.goodName) - setText(R.id.tvName, it.goodsPropertyTypeCode) + setText(R.id.tvName, """${it.jttGoodsCategoryName} ${it.packName}""") } } diff --git a/app/src/main/java/com/dhsd/glowner/adapter/PackingTypeAdapter2.kt b/app/src/main/java/com/dhsd/glowner/adapter/PackingTypeAdapter2.kt new file mode 100644 index 0000000..311daac --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/adapter/PackingTypeAdapter2.kt @@ -0,0 +1,36 @@ +package com.dhsd.glowner.adapter + +import android.content.Context +import android.view.ViewGroup +import android.widget.RadioButton +import android.widget.TextView +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.QuickAdapterHelper +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.glex.bean.WayBillBean +import com.dhsd.glowner.R +import com.dhsd.glowner.bean.DictBean +import com.dhsd.glowner.bean.PackTypeBean + +/** + * @ClassName PackingTypeAdapter + * @Author john + * @Date 2024/2/4 14:49 + * @Description TODO + */ +class PackingTypeAdapter2(datas:MutableList) : BaseQuickAdapter() { + init { + items = datas + } + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: DictBean?) { + holder.getView(R.id.rbWord).isSelected = item?.isCheck == true +// holder.getView(R.id.rbWord).isChecked = item?.isCheck == true + holder.setText(R.id.rbWord,item?.dictValue) + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ) = QuickViewHolder(R.layout.item_packing_type,parent) +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/bean/GoodBean.kt b/app/src/main/java/com/dhsd/glowner/bean/GoodBean.kt index 69038bd..6e28b23 100644 --- a/app/src/main/java/com/dhsd/glowner/bean/GoodBean.kt +++ b/app/src/main/java/com/dhsd/glowner/bean/GoodBean.kt @@ -1,17 +1,25 @@ package com.dhsd.glowner.bean data class GoodBean( - val cargoTypeClassificationCode: String, - val commonGoodsId: Int, - val createBy: String, - val createTime: String, - val goodName: String, - val goodsPropertyTypeCode: String, - val isDeleted: String, - val packName: String, - val remark: String, - val shipperId: Int, - val sortValue: String, - val updateBy: String, - val updateTime: String -) \ No newline at end of file + var cargoTypeClassificationCode: String, + var commonGoodsId: String, + var createBy: String, + var createTime: String, + var goodName: String, + var goodsPropertyTypeCode: String, + var jttGoodsCategoryName: String, + var alctGoodsCategoryCode: String, + var isDeleted: String, + var packName: String, + var remark: String, + var shipperId: String, + var sortValue: String, + var updateBy: String, + var updateTime: String, + var goodCube: String,//货物体积 + var goodItemGrossWeight: String,//货物重量(吨) + var goodPrice: String,//货物价值 + var goodBz:MutableList +){ + constructor():this("","","","","","","","","","","","","","","","","","", mutableListOf()) +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/net/Api.kt b/app/src/main/java/com/dhsd/glowner/net/Api.kt index fa2a9a4..362bdc9 100644 --- a/app/src/main/java/com/dhsd/glowner/net/Api.kt +++ b/app/src/main/java/com/dhsd/glowner/net/Api.kt @@ -136,7 +136,7 @@ interface Api { * 获取货主常用货物类型列表 * @return Observable>> */ - @GET(BASE_URL + "devApi//business/shipper/common/goods/list") + @GET(BASE_URL + "devApi/business/shipper/common/goods/list") fun getGoodsList(): Observable>> diff --git a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoActivity.kt index a626410..c7664bc 100644 --- a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoActivity.kt +++ b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoActivity.kt @@ -3,10 +3,13 @@ package com.dhsd.glowner.ui.home.activtiy import BaseObserver import DataManager import RxHttpCallBack +import android.content.Intent import android.os.Bundle +import android.text.TextUtils import android.view.View import android.view.View.OnClickListener import androidx.recyclerview.widget.GridLayoutManager +import com.dahe.gldriver.base.AppConfig import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.utils.PickerUtils @@ -15,12 +18,14 @@ import com.dhsd.glowner.R import com.dhsd.glowner.adapter.PackingTypeAdapter import com.dhsd.glowner.bean.AddressBean import com.dhsd.glowner.bean.DictBean +import com.dhsd.glowner.bean.GoodBean import com.dhsd.glowner.bean.GoodTypeBean import com.dhsd.glowner.bean.PackTypeBean import com.dhsd.glowner.databinding.ActivityGoodsInfoBinding import com.dhsd.glowner.utils.OnLimitClickHelper import com.dhsd.glowner.utils.OnLimitClickListener import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener +import com.google.gson.Gson import com.luck.picture.lib.decoration.GridSpacingItemDecoration import com.luck.picture.lib.utils.DensityUtil import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers @@ -33,11 +38,15 @@ import io.reactivex.rxjava3.schedulers.Schedulers * @Description 货物信息 */ class GoodsInfoActivity : BaseActivity(), - OnLimitClickListener ,OnClickListener{ + OnLimitClickListener, OnClickListener { private var unitType = 1 //1:重量,2:体积 lateinit var adapter: PackingTypeAdapter + + private lateinit var currGoodTypeBean: GoodTypeBean + + lateinit var preBean: GoodBean override fun initView(savedInstanceState: Bundle?) { setStatusBarColor(R.color.white) setTitleBar("货物信息", true) @@ -73,14 +82,38 @@ class GoodsInfoActivity : BaseActivity(), } } + + tvGoodType.setOnClickListener(OnLimitClickHelper(this@GoodsInfoActivity)) + btnRight.setOnClickListener(OnLimitClickHelper(this@GoodsInfoActivity)) + tvChange.setOnClickListener(this@GoodsInfoActivity) + } + intent.extras?.run { + val string = getString(AppConfig.BEAN) + preBean = Gson().fromJson(string, GoodBean::class.java) + binding?.run { + tvGood.setText(preBean.goodName) + tvGoodType.text = preBean.jttGoodsCategoryName + etMoney.setText(preBean.goodPrice) + if (!TextUtils.isEmpty(preBean.goodItemGrossWeight)) { + unitType = 1 + etWeight.setText(preBean.goodItemGrossWeight) + etWeight.hint = "请填写总重量(吨)" + tvUnit.text = "重量(吨)" + } else if (!TextUtils.isEmpty(preBean.goodCube)) { + unitType = 2 + etWeight.setText(preBean.goodCube) + etWeight.hint = "请填写总体积(m³)" + binding.tvUnit.text = "体积(m³)" + } + + adapter.items.find { it.dictValue == preBean.packName }?.let { + it.isCheck = true + adapter.notifyDataSetChanged() + } + + } } - binding.run { - tvGood.setOnClickListener(OnLimitClickHelper(this@GoodsInfoActivity)) - tvGoodType.setOnClickListener(OnLimitClickHelper(this@GoodsInfoActivity)) - tvChange.setOnClickListener(this@GoodsInfoActivity) -// tvChange.setOnClickListener(OnLimitClickHelper(this@GoodsInfoActivity)) - } } override fun initDate() { @@ -89,6 +122,10 @@ class GoodsInfoActivity : BaseActivity(), .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { override fun onSuccess(t: CommonResponseBean>) { super.onSuccess(t) + if (::preBean.isInitialized) { + val packName = preBean.packName + t.data.find { it.dictValue == packName }?.isCheck = true + } initList(t.data) } })) @@ -97,13 +134,17 @@ class GoodsInfoActivity : BaseActivity(), override fun onClick(view: View?) { super.onClick(view) when (view?.id) { + R.id.btnRight -> { + submit() + } + R.id.tvGood -> { - var datas = mutableListOf("螺纹钢", "螺纹钢1", "螺纹钢2") - PickerUtils.getInstance().showSingleSelect( - this, "请选择货物", datas - ) { position, item -> - showToast(item as String) - } +// var datas = mutableListOf("螺纹钢", "螺纹钢1", "螺纹钢2") +// PickerUtils.getInstance().showSingleSelect( +// this, "请选择货物", datas +// ) { position, item -> +// showToast(item as String) +// } } R.id.tvGoodType -> { @@ -140,7 +181,7 @@ class GoodsInfoActivity : BaseActivity(), this@GoodsInfoActivity, "请选择货物类型", "", t.data ) { position, item -> - item as GoodTypeBean + currGoodTypeBean = item as GoodTypeBean binding.tvGoodType.text = item.jttGoodsCategoryName } } @@ -168,4 +209,52 @@ class GoodsInfoActivity : BaseActivity(), } } + + private fun submit() { + binding.run { + + if (tvGood.text.isEmpty() || tvGoodType.text.isEmpty() || etWeight.text.isEmpty()) { + showToast("请完善货物信息") + return + } + + if (!::preBean.isInitialized) { + if (!::currGoodTypeBean.isInitialized) { + showToast("请选择货物类型") + return + } + } + + + val adapterBz = adapter.items.filter { it.isCheck } + if (adapterBz.isEmpty()) { + showToast("请选包装方式") + return + } + + + val goodBean = GoodBean().apply { + goodName = tvGood.text.toString().trim() + cargoTypeClassificationCode = + if (::preBean.isInitialized && !::currGoodTypeBean.isInitialized) preBean.cargoTypeClassificationCode else currGoodTypeBean.jttGoodsCategoryCode.toString() + goodsPropertyTypeCode = + if (::preBean.isInitialized && !::currGoodTypeBean.isInitialized) preBean.alctGoodsCategoryCode else currGoodTypeBean.alctGoodsCategoryCode.toString() + jttGoodsCategoryName = tvGoodType.text.toString() + packName = adapterBz.find { it.isCheck }!!.dictValue + goodPrice = etMoney.text.toString().trim() + if (unitType == 1) { + goodItemGrossWeight = etWeight.text.toString() + } else { + goodCube = etWeight.text.toString() + } + } + + setResult(RESULT_OK, Intent().apply { + putExtra(AppConfig.BEAN, Gson().toJson(goodBean)) + }) + finish() + } + + } + } \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivity.kt new file mode 100644 index 0000000..87a6503 --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivity.kt @@ -0,0 +1,190 @@ +package com.dhsd.glowner.ui.home.activtiy + +import BaseObserver +import DataManager +import Good +import RxHttpCallBack +import android.content.Intent +import android.graphics.Color +import android.os.Bundle +import android.view.View +import android.view.View.OnClickListener +import android.widget.LinearLayout +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.dahe.gldriver.base.AppConfig +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ConvertUtils +import com.dahe.mylibrary.utils.PickerUtils +import com.dahe.mylibrary.weight.FullyGridLayoutManager +import com.dhsd.glowner.R +import com.dhsd.glowner.adapter.GoodListAdapter +import com.dhsd.glowner.adapter.GoodsAdapter +import com.dhsd.glowner.adapter.PackingTypeAdapter +import com.dhsd.glowner.bean.AddressBean +import com.dhsd.glowner.bean.DictBean +import com.dhsd.glowner.bean.GoodBean +import com.dhsd.glowner.bean.GoodTypeBean +import com.dhsd.glowner.bean.PackTypeBean +import com.dhsd.glowner.databinding.ActivityGoodsInfoBinding +import com.dhsd.glowner.databinding.ActivityGoodsInfoListBinding +import com.dhsd.glowner.utils.OnLimitClickHelper +import com.dhsd.glowner.utils.OnLimitClickListener +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener +import com.google.gson.Gson +import com.luck.picture.lib.decoration.GridSpacingItemDecoration +import com.luck.picture.lib.utils.DensityUtil +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName GoodsInfoActivity + * @Author john + * @Date 2024/2/4 11:09 + * @Description 新增货物信息列表 + */ +class GoodsInfoListActivity : BaseActivity(), + OnLimitClickListener, OnClickListener { + private var editPosition: Int = -1 + +// private val launcher = +// registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> +// if (result.resultCode == AppCompatActivity.RESULT_OK) { +// result.data?.let { +// val serializableExtra = it.getSerializableExtra(AppConfig.BEAN) +// Gson().fromJson() +// } +// } +// } + + lateinit var adapter: GoodsAdapter + + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("货物信息", { finish() }, true, "常用货物") { +// launcher.launch(Intent(mContext,GoodsListActivity::class.java)) + } + + + binding.run { + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(10.0f), + Color.TRANSPARENT + ) + ) + adapter = GoodsAdapter() + adapter as GoodsAdapter + }.apply { + isStateViewEnable = true + submitList(null) + setStateViewLayout(mContext, R.layout.empty_view) + addOnItemChildClickListener(R.id.tvDel) { adapter, _, position -> + adapter.removeAt(position) + } + + addOnItemChildClickListener(R.id.tvEdit) { adapter, _, position -> + val goodBean = adapter.items[position] + editPosition = position + ActivityUtils.startActivityForResult( + this@GoodsInfoListActivity, + GoodsInfoActivity::class.java, + Bundle().apply { + putString(AppConfig.BEAN, Gson().toJson(goodBean)) + }, + 1 + ) + } + } + + btnLeft.setOnClickListener(OnLimitClickHelper(this@GoodsInfoListActivity)) + } + + + } + + override fun initDate() { + + } + + override fun onClick(view: View?) { + super.onClick(view) + when (view?.id) { + R.id.tvGood -> { + var datas = mutableListOf("螺纹钢", "螺纹钢1", "螺纹钢2") + PickerUtils.getInstance().showSingleSelect( + this, "请选择货物", datas + ) { position, item -> + showToast(item as String) + } + } + + R.id.tvGoodType -> { + + } + + R.id.tvChange -> { + + } + + R.id.btnLeft -> { + //新增货物需要初始化编辑货物标志 + editPosition = -1 + ActivityUtils.startActivityForResult( + this@GoodsInfoListActivity, + GoodsInfoActivity::class.java, + 1 + ) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) { + when (requestCode) { + 1 -> { + val serializableExtra = data?.getStringExtra(AppConfig.BEAN) + if (serializableExtra != null) { + val goodBean = Gson().fromJson(serializableExtra, GoodBean::class.java) + val items = adapter.items + if (items.isEmpty()) { + adapter.submitList(mutableListOf(goodBean)) + } else { + if (editPosition != -1) { + adapter[editPosition] = goodBean + } else { + adapter.add(goodBean) + } + + } +// adapter.notifyDataSetChanged() + } + } + } + } + } + + private fun initList(rows: List) { + if (rows.isEmpty()) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + if (mRefreshPage === 1) { + adapter?.submitList(rows) + } else { + adapter?.addAll(rows) + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivityBack.kt b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivityBack.kt new file mode 100644 index 0000000..b67260d --- /dev/null +++ b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsInfoListActivityBack.kt @@ -0,0 +1,160 @@ +package com.dhsd.glowner.ui.home.activtiy + +import BaseObserver +import DataManager +import Good +import RxHttpCallBack +import android.graphics.Color +import android.os.Bundle +import android.view.View +import android.view.View.OnClickListener +import android.widget.LinearLayout +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.net.CommonResponseBean +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ConvertUtils +import com.dahe.mylibrary.utils.PickerUtils +import com.dahe.mylibrary.weight.FullyGridLayoutManager +import com.dhsd.glowner.R +import com.dhsd.glowner.adapter.GoodListAdapter +import com.dhsd.glowner.adapter.PackingTypeAdapter +import com.dhsd.glowner.bean.AddressBean +import com.dhsd.glowner.bean.DictBean +import com.dhsd.glowner.bean.GoodBean +import com.dhsd.glowner.bean.GoodTypeBean +import com.dhsd.glowner.bean.PackTypeBean +import com.dhsd.glowner.databinding.ActivityGoodsInfoBinding +import com.dhsd.glowner.databinding.ActivityGoodsInfoListBinding +import com.dhsd.glowner.utils.OnLimitClickHelper +import com.dhsd.glowner.utils.OnLimitClickListener +import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener +import com.luck.picture.lib.decoration.GridSpacingItemDecoration +import com.luck.picture.lib.utils.DensityUtil +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers + +/** + * @ClassName GoodsInfoActivity + * @Author john + * @Date 2024/2/4 11:09 + * @Description 新增货物信息列表 + */ +class GoodsInfoListActivityBack : BaseActivity(), + OnLimitClickListener, OnClickListener { + + lateinit var adapter: GoodListAdapter + lateinit var datas: MutableList + lateinit var goodBzs : MutableList + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("货物信息", true) + + + binding.run { + adapter = recycler.run { + layoutManager = LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(10.0f), + Color.TRANSPARENT + ) + ) + adapter = GoodListAdapter() + adapter as GoodListAdapter + }.apply { + + addOnItemChildClickListener(R.id.tvChange) { adapter, view, position -> + + showToast("点击了$position") + + val items = adapter.items +// val indexOfFirst = items.indexOfFirst { it.isCheck } +// +// if (indexOfFirst > -1 && indexOfFirst != position) { +// items[indexOfFirst].isCheck = false +// items[position].isCheck = !items[position].isCheck +// notifyItemChanged(indexOfFirst) +// notifyItemChanged(position) +// } else { +// items[position].isCheck = !items[position].isCheck +// notifyItemChanged(position) +// } + + } + } + + btnLeft.setOnClickListener(OnLimitClickHelper(this@GoodsInfoListActivityBack)) + } + datas = mutableListOf(GoodBean()) + adapter.submitList(datas) + + } + + override fun initDate() { + DataManager.getInstance().getDictData("packaging_method") + .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) + .subscribe(BaseObserver(mContext, object : RxHttpCallBack>() { + override fun onSuccess(t: CommonResponseBean>) { + super.onSuccess(t) + goodBzs = t.data + adapter.items.forEach { + it.goodBz = goodBzs + } + adapter.notifyDataSetChanged() +// adapter.setGoodBz(t.data) +// initList(t.data) + } + })) + } + + override fun onClick(view: View?) { + super.onClick(view) + when (view?.id) { + R.id.tvGood -> { + var datas = mutableListOf("螺纹钢", "螺纹钢1", "螺纹钢2") + PickerUtils.getInstance().showSingleSelect( + this, "请选择货物", datas + ) { position, item -> + showToast(item as String) + } + } + + R.id.tvGoodType -> { + + } + + R.id.tvChange -> { + + } + + R.id.btnLeft -> { + datas.add(GoodBean().apply { + goodBzs.forEach { + it.isCheck = false + } + goodBz = goodBzs + }) + adapter.notifyItemInserted(datas.size - 1) + binding.recycler.scrollToPosition(datas.size - 1) + } + } + } + + private fun initList(rows: List) { + if (rows.isEmpty()) { + adapter.submitList(null) + adapter.setStateViewLayout(mContext, R.layout.empty_view) + } else { + if (mRefreshPage === 1) { + adapter?.submitList(rows) + } else { + adapter?.addAll(rows) + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsListActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsListActivity.kt index 98fb42d..f3776f1 100644 --- a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsListActivity.kt +++ b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/GoodsListActivity.kt @@ -25,7 +25,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers * @ClassName GoodsListActivity * @Author john * @Date 2024/11/1 16:36 - * @Description 常用货物 + * @Description 货物列表 */ class GoodsListActivity : BaseActivity(), RefreshCallBack { lateinit var adapter: GoodsAdapter @@ -47,14 +47,14 @@ class GoodsListActivity : BaseActivity(), RefreshCallB } override fun initDate() { - DataManager.getInstance().getGoodsList() - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(BaseObserver(mContext,object : RxHttpCallBack>(){ - override fun onSuccess(t: CommonResponseBean>) { - super.onSuccess(t) - initList(t.data.rows) - } - })) +// DataManager.getInstance().getGoodsList() +// .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) +// .subscribe(BaseObserver(mContext,object : RxHttpCallBack>(){ +// override fun onSuccess(t: CommonResponseBean>) { +// super.onSuccess(t) +// initList(t.data.rows) +// } +// })) } override fun getRefreshDate(stat: Int, page: Int, count: Int) { diff --git a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/SendGoodsActivity.kt b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/SendGoodsActivity.kt index 9696075..a5dfd88 100644 --- a/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/SendGoodsActivity.kt +++ b/app/src/main/java/com/dhsd/glowner/ui/home/activtiy/SendGoodsActivity.kt @@ -45,7 +45,9 @@ class SendGoodsActivity : BaseActivity() { ) binding.llGoods.setOnClickListener { - ActivityUtils.startActivity(mContext, GoodsInfoActivity::class.java) +// ActivityUtils.startActivity(mContext, GoodsInfoActivity::class.java) +// ActivityUtils.startActivity(mContext, GoodsInfoListActivity::class.java) + ActivityUtils.startActivity(mContext, GoodsInfoListActivity::class.java) } binding.llCarType.setOnClickListener { ActivityUtils.startActivity(mContext, CarTypeActivity::class.java) diff --git a/app/src/main/res/layout/activity_goods_info.xml b/app/src/main/res/layout/activity_goods_info.xml index c570692..a5ac320 100644 --- a/app/src/main/res/layout/activity_goods_info.xml +++ b/app/src/main/res/layout/activity_goods_info.xml @@ -261,6 +261,7 @@