diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt index 34059cf..fcd6a03 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未接单和待处理一样,可以共用布局和adapter @@ -46,7 +39,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -125,75 +118,62 @@ workOrderListViewModel.obtainNotAcceptOderList(page = index) } - private class WeakReferenceHandler(fragment: NotAcceptFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040601) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您没有超时未处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - fragment.clickedPosition = position - - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040601) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您没有超时未处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt index 34059cf..fcd6a03 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未接单和待处理一样,可以共用布局和adapter @@ -46,7 +39,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -125,75 +118,62 @@ workOrderListViewModel.obtainNotAcceptOderList(page = index) } - private class WeakReferenceHandler(fragment: NotAcceptFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040601) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您没有超时未处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - fragment.clickedPosition = position - - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040601) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您没有超时未处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt index 6415e0a..b390655 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.NotConfirmedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotConfirmedFragment : BaseFragment() { @@ -37,7 +34,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) /*** * 监听来自待处理和待确认两个列表数据变化的Action @@ -99,47 +96,35 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index) } - private class WeakReferenceHandler(fragment: NotConfirmedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033001) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033001) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您确认的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt index 34059cf..fcd6a03 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未接单和待处理一样,可以共用布局和adapter @@ -46,7 +39,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -125,75 +118,62 @@ workOrderListViewModel.obtainNotAcceptOderList(page = index) } - private class WeakReferenceHandler(fragment: NotAcceptFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040601) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您没有超时未处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - fragment.clickedPosition = position - - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040601) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您没有超时未处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt index 6415e0a..b390655 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.NotConfirmedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotConfirmedFragment : BaseFragment() { @@ -37,7 +34,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) /*** * 监听来自待处理和待确认两个列表数据变化的Action @@ -99,47 +96,35 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index) } - private class WeakReferenceHandler(fragment: NotConfirmedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033001) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033001) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您确认的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt index 6f225da..cdc3424 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未处理和待确认一样,可以共用布局和adapter @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) //注册广播接收者 BroadcastReceiverManager.instance.addAction(Constant.NOT_HANDLE_ACTION, @@ -99,47 +96,35 @@ workOrderListViewModel.obtainNotHandleOderList(page = index) } - private class WeakReferenceHandler(fragment: NotHandleFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040801) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040801) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt index 34059cf..fcd6a03 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未接单和待处理一样,可以共用布局和adapter @@ -46,7 +39,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -125,75 +118,62 @@ workOrderListViewModel.obtainNotAcceptOderList(page = index) } - private class WeakReferenceHandler(fragment: NotAcceptFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040601) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您没有超时未处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - fragment.clickedPosition = position - - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040601) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您没有超时未处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt index 6415e0a..b390655 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.NotConfirmedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotConfirmedFragment : BaseFragment() { @@ -37,7 +34,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) /*** * 监听来自待处理和待确认两个列表数据变化的Action @@ -99,47 +96,35 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index) } - private class WeakReferenceHandler(fragment: NotConfirmedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033001) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033001) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您确认的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt index 6f225da..cdc3424 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未处理和待确认一样,可以共用布局和adapter @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) //注册广播接收者 BroadcastReceiverManager.instance.addAction(Constant.NOT_HANDLE_ACTION, @@ -99,47 +96,35 @@ workOrderListViewModel.obtainNotHandleOderList(page = index) } - private class WeakReferenceHandler(fragment: NotHandleFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040801) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040801) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt index e2743a5..59e6ffe 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotProcessedFragment : BaseFragment() { @@ -42,7 +35,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -121,72 +114,59 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) } - private class WeakReferenceHandler(fragment: NotProcessedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032901) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt index 34059cf..fcd6a03 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未接单和待处理一样,可以共用布局和adapter @@ -46,7 +39,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -125,75 +118,62 @@ workOrderListViewModel.obtainNotAcceptOderList(page = index) } - private class WeakReferenceHandler(fragment: NotAcceptFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040601) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您没有超时未处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - fragment.clickedPosition = position - - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040601) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您没有超时未处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt index 6415e0a..b390655 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.NotConfirmedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotConfirmedFragment : BaseFragment() { @@ -37,7 +34,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) /*** * 监听来自待处理和待确认两个列表数据变化的Action @@ -99,47 +96,35 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index) } - private class WeakReferenceHandler(fragment: NotConfirmedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033001) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033001) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您确认的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt index 6f225da..cdc3424 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未处理和待确认一样,可以共用布局和adapter @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) //注册广播接收者 BroadcastReceiverManager.instance.addAction(Constant.NOT_HANDLE_ACTION, @@ -99,47 +96,35 @@ workOrderListViewModel.obtainNotHandleOderList(page = index) } - private class WeakReferenceHandler(fragment: NotHandleFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040801) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040801) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt index e2743a5..59e6ffe 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotProcessedFragment : BaseFragment() { @@ -42,7 +35,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -121,72 +114,59 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) } - private class WeakReferenceHandler(fragment: NotProcessedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032901) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/build.gradle b/build.gradle index 9c31572..3c00441 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.10' + ext.kotlin_version = '1.6.10' repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } google() diff --git a/app/build.gradle b/app/build.gradle index 01d50d7..0078923 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,13 +11,13 @@ keyPassword '123456789' } } - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.casic.app.smartwell" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 3 versionName "1.0.2" @@ -66,8 +66,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.4.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //基础依赖库 implementation 'com.github.AndroidCoderPeng:Android-library:1.6.0' @@ -81,11 +81,11 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata:2.2.0" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" + implementation "androidx.lifecycle:lifecycle-livedata:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' diff --git a/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt new file mode 100644 index 0000000..6ef28be --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/WeakReferenceHandler.kt @@ -0,0 +1,16 @@ +package com.casic.app.smartwell.utils + +import android.os.Handler +import android.os.Looper +import android.os.Message +import java.lang.ref.WeakReference + +class WeakReferenceHandler(callback: Callback) : Handler(Looper.getMainLooper()) { + + private var weakReference: WeakReference = WeakReference(callback) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + weakReference.get()?.handleMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e04333f..8096299 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -17,6 +14,7 @@ import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -25,7 +23,6 @@ import kotlinx.android.synthetic.main.activity_order_search_result.* import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class SearchResultActivity : BaseActivity() { private lateinit var weakReferenceHandler: WeakReferenceHandler @@ -49,7 +46,7 @@ override fun initData() { args = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) @@ -147,88 +144,78 @@ ) } - private class WeakReferenceHandler(activity: SearchResultActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - when (msg.what) { - 2022040102 -> { - activity.isRefresh = true - activity.pageIndex = 1 - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - 2022040101 -> { - if (activity.isRefresh || activity.isLoadMore) { - activity.searchResultAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainSearchResult(activity.args, activity.pageIndex) - } - } else { - activity.emptyView!!.hide() - activity.searchResultAdapter = - SearchResultAdapter(activity, activity.dataBeans) - activity.resultRecyclerView!!.layoutManager = - LinearLayoutManager(activity) - activity.resultRecyclerView!!.adapter = activity.searchResultAdapter - activity.searchResultAdapter.setOnItemClickListener(object : - SearchResultAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - if (activity.dataBeans[position].jobStatus == "0") { - activity.navigatePageTo(jobId) - } else { - activity.navigatePageTo(jobId) - } - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - activity.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onTransferViewClicked(position: Int) { - val jobId = activity.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - activity.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + when (it.what) { + 2022040102 -> { + isRefresh = true + pageIndex = 1 + obtainSearchResult(args, pageIndex) + } + 2022040101 -> { + if (isRefresh || isLoadMore) { + searchResultAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainSearchResult(args, pageIndex) } + } else { + emptyView!!.hide() + searchResultAdapter = SearchResultAdapter(this, dataBeans) + resultRecyclerView!!.layoutManager = LinearLayoutManager(this) + resultRecyclerView!!.adapter = searchResultAdapter + searchResultAdapter.setOnItemClickListener(object : + SearchResultAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + if (dataBeans[position].jobStatus == "0") { + navigatePageTo(jobId) + } else { + navigatePageTo(jobId) + } + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(this@SearchResultActivity) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 34fb56e..af7bd91 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -14,13 +11,13 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellManagementActivity : BaseActivity() { @@ -50,7 +47,7 @@ easyPopupWindow.setBackgroundDrawable(null) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) } override fun initEvent() { @@ -145,60 +142,47 @@ ) } - private class WeakReferenceHandler(activity: WellManagementActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032501) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellListAdapter = WellListAdapter(activity, activity.dataBeans) - activity.wellListView!!.layoutManager = LinearLayoutManager(activity) - activity.wellListView!!.adapter = activity.wellListAdapter - activity.wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032501) { + if (isRefresh || isLoadMore) { + wellListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellListAdapter = WellListAdapter(this, dataBeans) + wellListView!!.layoutManager = LinearLayoutManager(this) + wellListView!!.adapter = wellListAdapter + wellListAdapter.setOnItemClickListener(object : + WellListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onItemButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellManagementActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index df5fb0c..a0b2504 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -1,9 +1,6 @@ package com.casic.app.smartwell.view -import android.annotation.SuppressLint import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng @@ -16,6 +13,7 @@ import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -23,7 +21,6 @@ import kotlinx.android.synthetic.main.activity_well_operation.* import kotlinx.android.synthetic.main.include_empty_view.* import kotlinx.android.synthetic.main.include_search_bar.* -import java.lang.ref.WeakReference class WellOperationActivity : BaseActivity() { @@ -51,7 +48,7 @@ override fun initData() { easyPopupWindow = WellTypePopupWindow(this) easyPopupWindow.setBackgroundDrawable(null) - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) } @@ -176,101 +173,85 @@ ) } - private class WeakReferenceHandler(activity: WellOperationActivity) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(activity) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val activity = reference.get()!! - if (msg.what == 2022032801) { - if (activity.isRefresh || activity.isLoadMore) { - activity.wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (activity.dataBeans.size == 0) { - activity.emptyView!!.showEmptyPage { - activity.obtainWellList( - activity.keywords, - activity.wellType, - activity.pageIndex - ) - } - } else { - activity.emptyView!!.hide() - activity.wellOperationAdapter = - WellOperationAdapter(activity, activity.dataBeans) - activity.operationListView!!.layoutManager = LinearLayoutManager(activity) - activity.operationListView!!.adapter = activity.wellOperationAdapter - activity.wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = activity.dataBeans[position].id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - activity.navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - activity.clickedPosition = position - - val detailModel = activity.dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show() - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(activity) - .setTitle("操作提示") - .setMessage("确定将该井${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - activity.wellViewModel.obtainOperationResult( - id = wellId, state = bfzt - ) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = activity.dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "窨井经纬度异常,无法开启导航".show() - return - } - Poi( - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(activity) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032801) { + if (isRefresh || isLoadMore) { + wellOperationAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage { + obtainWellList(keywords, wellType, pageIndex) } + } else { + emptyView!!.hide() + wellOperationAdapter = WellOperationAdapter(this, dataBeans) + operationListView!!.layoutManager = LinearLayoutManager(this) + operationListView!!.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickListener(object : + WellOperationAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val wellId = dataBeans[position].id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + navigatePageTo(wellId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "井编号异常,无法查看详情".show() + return + } + val bfzt = if (detailModel.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (detailModel.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(this@WellOperationActivity) + .setTitle("操作提示") + .setMessage("确定将该井${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult(wellId, bfzt) + } + + override fun onCancelClick() { + + } + }).build().show() + } + + override fun onNavigationButtonClicked(position: Int) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "窨井经纬度异常,无法开启导航".show() + return + } + Poi( + wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" + ).showRouteOnMap(this@WellOperationActivity) + } + }) } } } + true } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt index 4871f17..812cbe8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/CompletedOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.CompletedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class CompletedOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_completed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) //注册广播接收者 @@ -113,56 +110,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "3", page = index) } - private class WeakReferenceHandler(fragment: CompletedOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033101) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.completedAdapter.notifyDataSetChanged() - } else { - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.completedAdapter = CompletedOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.completedOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.completedOrderView!!.adapter = fragment.completedAdapter - fragment.completedAdapter.setOnItemClickListener(object : - CompletedOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033101) { + if (isRefresh || isLoadMore) { + completedAdapter.notifyDataSetChanged() + } else { + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + completedAdapter = CompletedOrderAdapter(requireContext(), dataBeans) + completedOrderView!!.layoutManager = LinearLayoutManager(requireContext()) + completedOrderView!!.adapter = completedAdapter + completedAdapter.setOnItemClickListener(object : + CompletedOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt index 0faa308..3c289ac 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/InHandleOrderFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,6 +14,7 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -24,7 +22,6 @@ import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_in_handle.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class InHandleOrderFragment : BaseFragment() { @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_in_handle override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) /*** @@ -116,56 +113,44 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "2", page = index) } - private class WeakReferenceHandler(fragment: InHandleOrderFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033002) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.inHandleAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.inHandleAdapter = InHandleOrderAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.inHandleView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.inHandleView!!.adapter = fragment.inHandleAdapter - fragment.inHandleAdapter.setOnItemClickListener(object : - InHandleOrderAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onTransferViewClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看工单流转记录".show() - return - } - fragment.workOrderViewModel.obtainWorkOrderDetail(id = jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033002) { + if (isRefresh || isLoadMore) { + inHandleAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + inHandleAdapter = InHandleOrderAdapter(requireContext(), dataBeans) + inHandleView!!.layoutManager = LinearLayoutManager(requireContext()) + inHandleView!!.adapter = inHandleAdapter + inHandleAdapter.setOnItemClickListener(object : + InHandleOrderAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onTransferViewClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看工单流转记录".show() + return + } + workOrderViewModel.obtainWorkOrderDetail(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt index 34059cf..fcd6a03 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotAcceptFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未接单和待处理一样,可以共用布局和adapter @@ -46,7 +39,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -125,75 +118,62 @@ workOrderListViewModel.obtainNotAcceptOderList(page = index) } - private class WeakReferenceHandler(fragment: NotAcceptFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040601) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("您没有超时未处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - fragment.clickedPosition = position - - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040601) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("您没有超时未处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + //标记被点击的item位置 + clickedPosition = position + + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt index 6415e0a..b390655 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotConfirmedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.NotConfirmedDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotConfirmedFragment : BaseFragment() { @@ -37,7 +34,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) /*** * 监听来自待处理和待确认两个列表数据变化的Action @@ -99,47 +96,35 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "1", page = index) } - private class WeakReferenceHandler(fragment: NotConfirmedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022033001) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您确认的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022033001) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您确认的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt index 6f225da..cdc3424 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotHandleFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -17,12 +14,12 @@ import com.casic.app.smartwell.model.WorkOrderListModel import com.casic.app.smartwell.utils.BroadcastReceiverManager import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.utils.WeakReferenceHandler import com.casic.app.smartwell.view.InHandleDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment import kotlinx.android.synthetic.main.fragment_order_not_confirmed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference /** * 超时未处理和待确认一样,可以共用布局和adapter @@ -40,7 +37,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_confirmed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) //注册广播接收者 BroadcastReceiverManager.instance.addAction(Constant.NOT_HANDLE_ACTION, @@ -99,47 +96,35 @@ workOrderListViewModel.obtainNotHandleOderList(page = index) } - private class WeakReferenceHandler(fragment: NotHandleFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022040801) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.notConfirmedAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.notConfirmedAdapter = NotConfirmedAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notConfirmedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notConfirmedView!!.adapter = fragment.notConfirmedAdapter - fragment.notConfirmedAdapter.setOnItemClickListener(object : - NotConfirmedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - }) + private val callback = Handler.Callback { + if (it.what == 2022040801) { + if (isRefresh || isLoadMore) { + notConfirmedAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + notConfirmedAdapter = NotConfirmedAdapter(requireContext(), dataBeans) + notConfirmedView!!.layoutManager = LinearLayoutManager(requireContext()) + notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedAdapter.setOnItemClickListener(object : + NotConfirmedAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + }) } } } + true } override fun onDestroyView() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt index e2743a5..59e6ffe 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/NotProcessedFragment.kt @@ -1,12 +1,9 @@ package com.casic.app.smartwell.view.fragment -import android.annotation.SuppressLint import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.os.Handler -import android.os.Looper -import android.os.Message import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -15,10 +12,7 @@ import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WorkOrderListModel -import com.casic.app.smartwell.utils.BroadcastReceiverManager -import com.casic.app.smartwell.utils.Constant -import com.casic.app.smartwell.utils.DialogHelper -import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.view.NotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -26,7 +20,6 @@ import com.pengxh.app.multilib.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_order_not_processed.* import kotlinx.android.synthetic.main.include_empty_view.* -import java.lang.ref.WeakReference class NotProcessedFragment : BaseFragment() { @@ -42,7 +35,7 @@ override fun initLayoutView(): Int = R.layout.fragment_order_not_processed override fun initData() { - weakReferenceHandler = WeakReferenceHandler(this) + weakReferenceHandler = WeakReferenceHandler(callback) workOrderListViewModel = ViewModelProvider(this).get(WorkOrderListViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) //注册广播接收者 @@ -121,72 +114,59 @@ workOrderListViewModel.obtainWorkOrderListByState(jobStatus = "0", page = index) } - private class WeakReferenceHandler(fragment: NotProcessedFragment) : - Handler(Looper.getMainLooper()) { - private val reference: WeakReference = WeakReference(fragment) - - @SuppressLint("NotifyDataSetChanged") - override fun handleMessage(msg: Message) { - super.handleMessage(msg) - val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.showEmptyPage("没有需要您处理的工单") { - fragment.obtainWorkOrderList(fragment.pageIndex) - } - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = NotProcessedListAdapter( - fragment.requireContext(), - fragment.dataBeans - ) - fragment.notProcessedView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.notProcessedView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - NotProcessedListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单编号异常,无法查看详情".show() - return - } - fragment.requireContext() - .navigatePageTo(jobId) - } - - override fun onOperationClicked(position: Int) { - AlertControlDialog.Builder() - .setContext(fragment.requireContext()) - .setTitle("操作提示") - .setMessage("确定要接单吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - val jobId = - fragment.dataBeans[position].jobId.toString() - if (jobId.isBlank()) { - "工单ID异常,无法接单".show() - return - } - fragment.operationViewModel.acceptWorkOrder(id = jobId) - } - - override fun onCancelClick() { - - } - }).build().show() - } - }) + private val callback = Handler.Callback { + if (it.what == 2022032901) { + if (isRefresh || isLoadMore) { + workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (dataBeans.size == 0) { + emptyView!!.showEmptyPage("没有需要您处理的工单") { + obtainWorkOrderList(pageIndex) } + } else { + emptyView!!.hide() + workOrderListAdapter = NotProcessedListAdapter(requireContext(), dataBeans) + notProcessedView!!.layoutManager = LinearLayoutManager(requireContext()) + notProcessedView!!.adapter = workOrderListAdapter + workOrderListAdapter.setOnItemClickListener(object : + NotProcessedListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show() + return + } + requireContext().navigatePageTo(jobId) + } + + override fun onOperationClicked(position: Int) { + AlertControlDialog.Builder() + .setContext(requireContext()) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + val jobId = dataBeans[position].jobId.toString() + if (jobId.isBlank()) { + "工单ID异常,无法接单".show() + return + } + operationViewModel.acceptWorkOrder(jobId) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) } } } + true } override fun onDestroyView() { diff --git a/build.gradle b/build.gradle index 9c31572..3c00441 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.10' + ext.kotlin_version = '1.6.10' repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } google() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 117361c..863ad80 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip