diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02160cd..07519f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,8 @@ + + + + () } equipmentLayout.setOnRefreshListener { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02160cd..07519f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,8 @@ + + () } equipmentLayout.setOnRefreshListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt new file mode 100644 index 0000000..b053e85 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -0,0 +1,36 @@ +package com.casic.xz.meterage.view.search + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import kotlinx.android.synthetic.main.activity_search_equipment.* + +/** + * 搜索仪器设备 + * */ +class SearchEquipmentActivity : KotlinBaseActivity() { + + override fun initData() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + searchTextView.setOnClickListener { + navigatePageTo(inputView.text.toString()) + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02160cd..07519f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,8 @@ + + () } equipmentLayout.setOnRefreshListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt new file mode 100644 index 0000000..b053e85 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -0,0 +1,36 @@ +package com.casic.xz.meterage.view.search + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import kotlinx.android.synthetic.main.activity_search_equipment.* + +/** + * 搜索仪器设备 + * */ +class SearchEquipmentActivity : KotlinBaseActivity() { + + override fun initData() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + searchTextView.setOnClickListener { + navigatePageTo(inputView.text.toString()) + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt new file mode 100644 index 0000000..5ee960d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.view.search + +import android.os.Handler +import android.view.View +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.EquipmentListAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.EquipmentListModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EquipmentDetailActivity +import com.casic.xz.meterage.vm.EquipmentViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_search_equipment_reasult.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class SearchEquipmentResultActivity : KotlinBaseActivity() { + + private lateinit var param: String + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var equipmentViewModel: EquipmentViewModel + private lateinit var equipmentListAdapter: EquipmentListAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + param = intent.getStringExtra(Constant.INTENT_PARAM)!! + + weakReferenceHandler = WeakReferenceHandler(callback) + equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.equipmentResult.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + equipmentLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows) + equipmentLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023020802) + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + equipmentLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getEquipmentListByPage() + } + + equipmentLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getEquipmentListByPage() + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult + + override fun observeRequestState() { + equipmentViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "查询结果" + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getEquipmentListByPage() + } + + //TODO 查询条件待定 + private fun getEquipmentListByPage() { + equipmentViewModel.getEquipmentList( + "", + param, + "", + "", + "", + "1", + "", + "", + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + private val callback = Handler.Callback { + when (it.what) { + 2023020802 -> { + if (isRefresh || isLoadMore) { + equipmentListAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有查询到符合条件的设备数据") { + pageIndex = 1 + getEquipmentListByPage() + } + } else { + emptyView!!.hide() + equipmentListAdapter = EquipmentListAdapter(this, dataBeans) + equipmentRecyclerView.addItemDecoration( + DividerItemDecoration(this, DividerItemDecoration.VERTICAL) + ) + equipmentRecyclerView.adapter = equipmentListAdapter + equipmentListAdapter.setOnItemClickListener(object : + EquipmentListAdapter.OnItemClickListener { + override fun onItemClicked(position: Int) { + val rowsModel = dataBeans[position] + navigatePageTo(rowsModel.id) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02160cd..07519f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,8 @@ + + () } equipmentLayout.setOnRefreshListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt new file mode 100644 index 0000000..b053e85 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -0,0 +1,36 @@ +package com.casic.xz.meterage.view.search + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import kotlinx.android.synthetic.main.activity_search_equipment.* + +/** + * 搜索仪器设备 + * */ +class SearchEquipmentActivity : KotlinBaseActivity() { + + override fun initData() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + searchTextView.setOnClickListener { + navigatePageTo(inputView.text.toString()) + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt new file mode 100644 index 0000000..5ee960d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.view.search + +import android.os.Handler +import android.view.View +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.EquipmentListAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.EquipmentListModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EquipmentDetailActivity +import com.casic.xz.meterage.vm.EquipmentViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_search_equipment_reasult.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class SearchEquipmentResultActivity : KotlinBaseActivity() { + + private lateinit var param: String + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var equipmentViewModel: EquipmentViewModel + private lateinit var equipmentListAdapter: EquipmentListAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + param = intent.getStringExtra(Constant.INTENT_PARAM)!! + + weakReferenceHandler = WeakReferenceHandler(callback) + equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.equipmentResult.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + equipmentLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows) + equipmentLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023020802) + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + equipmentLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getEquipmentListByPage() + } + + equipmentLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getEquipmentListByPage() + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult + + override fun observeRequestState() { + equipmentViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "查询结果" + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getEquipmentListByPage() + } + + //TODO 查询条件待定 + private fun getEquipmentListByPage() { + equipmentViewModel.getEquipmentList( + "", + param, + "", + "", + "", + "1", + "", + "", + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + private val callback = Handler.Callback { + when (it.what) { + 2023020802 -> { + if (isRefresh || isLoadMore) { + equipmentListAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有查询到符合条件的设备数据") { + pageIndex = 1 + getEquipmentListByPage() + } + } else { + emptyView!!.hide() + equipmentListAdapter = EquipmentListAdapter(this, dataBeans) + equipmentRecyclerView.addItemDecoration( + DividerItemDecoration(this, DividerItemDecoration.VERTICAL) + ) + equipmentRecyclerView.adapter = equipmentListAdapter + equipmentListAdapter.setOnItemClickListener(object : + EquipmentListAdapter.OnItemClickListener { + override fun onItemClicked(position: Int) { + val rowsModel = dataBeans[position] + navigatePageTo(rowsModel.id) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml new file mode 100644 index 0000000..a960801 --- /dev/null +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02160cd..07519f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,8 @@ + + () } equipmentLayout.setOnRefreshListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt new file mode 100644 index 0000000..b053e85 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -0,0 +1,36 @@ +package com.casic.xz.meterage.view.search + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import kotlinx.android.synthetic.main.activity_search_equipment.* + +/** + * 搜索仪器设备 + * */ +class SearchEquipmentActivity : KotlinBaseActivity() { + + override fun initData() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + searchTextView.setOnClickListener { + navigatePageTo(inputView.text.toString()) + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt new file mode 100644 index 0000000..5ee960d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.view.search + +import android.os.Handler +import android.view.View +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.EquipmentListAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.EquipmentListModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EquipmentDetailActivity +import com.casic.xz.meterage.vm.EquipmentViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_search_equipment_reasult.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class SearchEquipmentResultActivity : KotlinBaseActivity() { + + private lateinit var param: String + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var equipmentViewModel: EquipmentViewModel + private lateinit var equipmentListAdapter: EquipmentListAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + param = intent.getStringExtra(Constant.INTENT_PARAM)!! + + weakReferenceHandler = WeakReferenceHandler(callback) + equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.equipmentResult.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + equipmentLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows) + equipmentLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023020802) + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + equipmentLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getEquipmentListByPage() + } + + equipmentLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getEquipmentListByPage() + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult + + override fun observeRequestState() { + equipmentViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "查询结果" + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getEquipmentListByPage() + } + + //TODO 查询条件待定 + private fun getEquipmentListByPage() { + equipmentViewModel.getEquipmentList( + "", + param, + "", + "", + "", + "1", + "", + "", + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + private val callback = Handler.Callback { + when (it.what) { + 2023020802 -> { + if (isRefresh || isLoadMore) { + equipmentListAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有查询到符合条件的设备数据") { + pageIndex = 1 + getEquipmentListByPage() + } + } else { + emptyView!!.hide() + equipmentListAdapter = EquipmentListAdapter(this, dataBeans) + equipmentRecyclerView.addItemDecoration( + DividerItemDecoration(this, DividerItemDecoration.VERTICAL) + ) + equipmentRecyclerView.adapter = equipmentListAdapter + equipmentListAdapter.setOnItemClickListener(object : + EquipmentListAdapter.OnItemClickListener { + override fun onItemClicked(position: Int) { + val rowsModel = dataBeans[position] + navigatePageTo(rowsModel.id) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml new file mode 100644 index 0000000..a960801 --- /dev/null +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment_reasult.xml b/app/src/main/res/layout/activity_search_equipment_reasult.xml new file mode 100644 index 0000000..9136ce5 --- /dev/null +++ b/app/src/main/res/layout/activity_search_equipment_reasult.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 02160cd..07519f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,8 @@ + + () } equipmentLayout.setOnRefreshListener { diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt new file mode 100644 index 0000000..b053e85 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentActivity.kt @@ -0,0 +1,36 @@ +package com.casic.xz.meterage.view.search + +import com.casic.xz.meterage.R +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import kotlinx.android.synthetic.main.activity_search_equipment.* + +/** + * 搜索仪器设备 + * */ +class SearchEquipmentActivity : KotlinBaseActivity() { + + override fun initData() { + + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + searchTextView.setOnClickListener { + navigatePageTo(inputView.text.toString()) + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt new file mode 100644 index 0000000..5ee960d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEquipmentResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.xz.meterage.view.search + +import android.os.Handler +import android.view.View +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.DividerItemDecoration +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.EquipmentListAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showEmptyPage +import com.casic.xz.meterage.model.EquipmentListModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EquipmentDetailActivity +import com.casic.xz.meterage.vm.EquipmentViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_search_equipment_reasult.* +import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_empty_view.* + +class SearchEquipmentResultActivity : KotlinBaseActivity() { + + private lateinit var param: String + private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var equipmentViewModel: EquipmentViewModel + private lateinit var equipmentListAdapter: EquipmentListAdapter + private var dataBeans: MutableList = ArrayList() + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + + override fun initData() { + param = intent.getStringExtra(Constant.INTENT_PARAM)!! + + weakReferenceHandler = WeakReferenceHandler(callback) + equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java] + equipmentViewModel.equipmentResult.observe(this, { + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + dataBeans.clear() + dataBeans = dataRows + equipmentLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + dataBeans.addAll(dataRows) + equipmentLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler.sendEmptyMessage(2023020802) + } + }) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + + equipmentLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + getEquipmentListByPage() + } + + equipmentLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + getEquipmentListByPage() + } + } + + override fun initLayoutView(): Int = R.layout.activity_search_equipment_reasult + + override fun observeRequestState() { + equipmentViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + }) + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "查询结果" + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + getEquipmentListByPage() + } + + //TODO 查询条件待定 + private fun getEquipmentListByPage() { + equipmentViewModel.getEquipmentList( + "", + param, + "", + "", + "", + "1", + "", + "", + "", + "", + "", + "", + "", + "", + arrayOf(), + pageIndex + ) + } + + private val callback = Handler.Callback { + when (it.what) { + 2023020802 -> { + if (isRefresh || isLoadMore) { + equipmentListAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有查询到符合条件的设备数据") { + pageIndex = 1 + getEquipmentListByPage() + } + } else { + emptyView!!.hide() + equipmentListAdapter = EquipmentListAdapter(this, dataBeans) + equipmentRecyclerView.addItemDecoration( + DividerItemDecoration(this, DividerItemDecoration.VERTICAL) + ) + equipmentRecyclerView.adapter = equipmentListAdapter + equipmentListAdapter.setOnItemClickListener(object : + EquipmentListAdapter.OnItemClickListener { + override fun onItemClicked(position: Int) { + val rowsModel = dataBeans[position] + navigatePageTo(rowsModel.id) + } + }) + } + } + } + } + true + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment.xml b/app/src/main/res/layout/activity_search_equipment.xml new file mode 100644 index 0000000..a960801 --- /dev/null +++ b/app/src/main/res/layout/activity_search_equipment.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search_equipment_reasult.xml b/app/src/main/res/layout/activity_search_equipment_reasult.xml new file mode 100644 index 0000000..9136ce5 --- /dev/null +++ b/app/src/main/res/layout/activity_search_equipment_reasult.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index e1ab759..fb1b2bd 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -38,6 +38,7 @@ android:layout_weight="1" android:background="@null" android:hint="查询样品、业务" + android:singleLine="true" android:textColor="@color/mainTextColor" android:textColorHint="@color/hintColor" android:textSize="@dimen/sp_16" />