diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index 9cf4150..93aa7f8 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -2,7 +2,6 @@ import android.content.Context; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -23,6 +22,7 @@ import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -31,7 +31,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -77,7 +76,7 @@ wellListPresenter = new WellListPresenterImpl(this); wellListPresenter.onReadyRetrofitRequest(pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); optionWellPresenter = new OptionWellPresenterImpl(this); } @@ -103,62 +102,52 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WellListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WellListActivity activity = reference.get(); - if (msg.what == 20210628) { - if (activity.isRefresh || activity.isLoadMore) { - activity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210628) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); } else { - //首次加载数据 - if (activity.dataBeans.size() == 0) { - activity.viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); - } else { - activity.viewBinding.emptyView.hide(); - activity.adapter = new WellListAdapter(activity, activity.dataBeans); - activity.viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - activity.viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(activity, DividerItemDecoration.VERTICAL)); - activity.viewBinding.wellRecyclerView.setAdapter(activity.adapter); - activity.adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - WellListBean.DataBean.RowsBean rowsBean = activity.dataBeans.get(position); - String lng = rowsBean.getCoordinateX(); - String lat = rowsBean.getCoordinateY(); - OtherUtils.displayOnMap(activity, "others", lng, lat); + viewBinding.emptyView.hide(); + adapter = new WellListAdapter(this, dataBeans); + viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.wellRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + WellListBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + String lng = rowsBean.getCoordinateX(); + String lat = rowsBean.getCoordinateY(); + OtherUtils.displayOnMap(context, "others", lng, lat); + } + }); + adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { + @Override + public void onClick(int position) { + String bfzt = dataBeans.get(position).getBfzt(); + String bfztName; + if (bfzt.equals("0")) { + bfztName = "布防"; + bfzt = "1"; + } else if (bfzt.equals("1")) { + bfztName = "撤防"; + bfzt = "0"; + } else { + ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); + return; } - }); - activity.adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { - @Override - public void onClick(int position) { - String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName; - if (bfzt.equals("0")) { - bfztName = "布防"; - bfzt = "1"; - } else if (bfzt.equals("1")) { - bfztName = "撤防"; - bfzt = "0"; - } else { - ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); - return; - } - activity.showSingleOptionDialog(bfztName, activity.dataBeans.get(position).getId(), bfzt); - } - }); - } + showSingleOptionDialog(bfztName, dataBeans.get(position).getId(), bfzt); + } + }); } } } - } + return true; + }; //单个撤防/布防 private void showSingleOptionDialog(String bfztName, String id, String bfzt) { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index 9cf4150..93aa7f8 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -2,7 +2,6 @@ import android.content.Context; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -23,6 +22,7 @@ import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -31,7 +31,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -77,7 +76,7 @@ wellListPresenter = new WellListPresenterImpl(this); wellListPresenter.onReadyRetrofitRequest(pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); optionWellPresenter = new OptionWellPresenterImpl(this); } @@ -103,62 +102,52 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WellListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WellListActivity activity = reference.get(); - if (msg.what == 20210628) { - if (activity.isRefresh || activity.isLoadMore) { - activity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210628) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); } else { - //首次加载数据 - if (activity.dataBeans.size() == 0) { - activity.viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); - } else { - activity.viewBinding.emptyView.hide(); - activity.adapter = new WellListAdapter(activity, activity.dataBeans); - activity.viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - activity.viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(activity, DividerItemDecoration.VERTICAL)); - activity.viewBinding.wellRecyclerView.setAdapter(activity.adapter); - activity.adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - WellListBean.DataBean.RowsBean rowsBean = activity.dataBeans.get(position); - String lng = rowsBean.getCoordinateX(); - String lat = rowsBean.getCoordinateY(); - OtherUtils.displayOnMap(activity, "others", lng, lat); + viewBinding.emptyView.hide(); + adapter = new WellListAdapter(this, dataBeans); + viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.wellRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + WellListBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + String lng = rowsBean.getCoordinateX(); + String lat = rowsBean.getCoordinateY(); + OtherUtils.displayOnMap(context, "others", lng, lat); + } + }); + adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { + @Override + public void onClick(int position) { + String bfzt = dataBeans.get(position).getBfzt(); + String bfztName; + if (bfzt.equals("0")) { + bfztName = "布防"; + bfzt = "1"; + } else if (bfzt.equals("1")) { + bfztName = "撤防"; + bfzt = "0"; + } else { + ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); + return; } - }); - activity.adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { - @Override - public void onClick(int position) { - String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName; - if (bfzt.equals("0")) { - bfztName = "布防"; - bfzt = "1"; - } else if (bfzt.equals("1")) { - bfztName = "撤防"; - bfzt = "0"; - } else { - ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); - return; - } - activity.showSingleOptionDialog(bfztName, activity.dataBeans.get(position).getId(), bfzt); - } - }); - } + showSingleOptionDialog(bfztName, dataBeans.get(position).getId(), bfzt); + } + }); } } } - } + return true; + }; //单个撤防/布防 private void showSingleOptionDialog(String bfztName, String id, String bfzt) { diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 280f13d..fd2feb6 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -7,14 +7,11 @@ import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.os.Handler; -import android.os.Message; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseActivity; @@ -24,6 +21,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.Point; @@ -41,7 +39,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.List; import java.util.concurrent.ExecutionException; @@ -74,7 +71,7 @@ Basemap baseMap = new Basemap(ArcGisMapCreator.createBaseLayer()); arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -138,38 +135,28 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity activity) { - reference = new WeakReference<>(activity); + private final Handler.Callback callback = msg -> { + if (msg.what == 2021060101) { + View popupView = LayoutInflater.from(this).inflate(R.layout.popu_worker, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); + TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); + userNameView.setText(userName); + signInTimeView.setText(createTime); + toiletNameView.setText(toiletName); + QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(this, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + } else if (msg.what == 2021060102) { + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - if (msg.what == 2021060101) { - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.viewBinding.mapView); - } else if (msg.what == 2021060102) { - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - } - } - } + return true; + }; private void addPictureMarker(Point point) { Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index 9cf4150..93aa7f8 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -2,7 +2,6 @@ import android.content.Context; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -23,6 +22,7 @@ import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -31,7 +31,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -77,7 +76,7 @@ wellListPresenter = new WellListPresenterImpl(this); wellListPresenter.onReadyRetrofitRequest(pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); optionWellPresenter = new OptionWellPresenterImpl(this); } @@ -103,62 +102,52 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WellListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WellListActivity activity = reference.get(); - if (msg.what == 20210628) { - if (activity.isRefresh || activity.isLoadMore) { - activity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210628) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); } else { - //首次加载数据 - if (activity.dataBeans.size() == 0) { - activity.viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); - } else { - activity.viewBinding.emptyView.hide(); - activity.adapter = new WellListAdapter(activity, activity.dataBeans); - activity.viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - activity.viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(activity, DividerItemDecoration.VERTICAL)); - activity.viewBinding.wellRecyclerView.setAdapter(activity.adapter); - activity.adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - WellListBean.DataBean.RowsBean rowsBean = activity.dataBeans.get(position); - String lng = rowsBean.getCoordinateX(); - String lat = rowsBean.getCoordinateY(); - OtherUtils.displayOnMap(activity, "others", lng, lat); + viewBinding.emptyView.hide(); + adapter = new WellListAdapter(this, dataBeans); + viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.wellRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + WellListBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + String lng = rowsBean.getCoordinateX(); + String lat = rowsBean.getCoordinateY(); + OtherUtils.displayOnMap(context, "others", lng, lat); + } + }); + adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { + @Override + public void onClick(int position) { + String bfzt = dataBeans.get(position).getBfzt(); + String bfztName; + if (bfzt.equals("0")) { + bfztName = "布防"; + bfzt = "1"; + } else if (bfzt.equals("1")) { + bfztName = "撤防"; + bfzt = "0"; + } else { + ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); + return; } - }); - activity.adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { - @Override - public void onClick(int position) { - String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName; - if (bfzt.equals("0")) { - bfztName = "布防"; - bfzt = "1"; - } else if (bfzt.equals("1")) { - bfztName = "撤防"; - bfzt = "0"; - } else { - ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); - return; - } - activity.showSingleOptionDialog(bfztName, activity.dataBeans.get(position).getId(), bfzt); - } - }); - } + showSingleOptionDialog(bfztName, dataBeans.get(position).getId(), bfzt); + } + }); } } } - } + return true; + }; //单个撤防/布防 private void showSingleOptionDialog(String bfztName, String id, String bfzt) { diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 280f13d..fd2feb6 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -7,14 +7,11 @@ import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.os.Handler; -import android.os.Message; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseActivity; @@ -24,6 +21,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.Point; @@ -41,7 +39,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.List; import java.util.concurrent.ExecutionException; @@ -74,7 +71,7 @@ Basemap baseMap = new Basemap(ArcGisMapCreator.createBaseLayer()); arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -138,38 +135,28 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity activity) { - reference = new WeakReference<>(activity); + private final Handler.Callback callback = msg -> { + if (msg.what == 2021060101) { + View popupView = LayoutInflater.from(this).inflate(R.layout.popu_worker, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); + TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); + userNameView.setText(userName); + signInTimeView.setText(createTime); + toiletNameView.setText(toiletName); + QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(this, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + } else if (msg.what == 2021060102) { + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - if (msg.what == 2021060101) { - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.viewBinding.mapView); - } else if (msg.what == 2021060102) { - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - } - } - } + return true; + }; private void addPictureMarker(Point point) { Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java index 0015d9e..fc056ef 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java @@ -14,8 +14,6 @@ import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseFragment; @@ -35,6 +33,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; @@ -57,7 +56,6 @@ import org.json.JSONObject; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -81,7 +79,7 @@ context = getContext(); lightLocalBeanDao = BaseApplication.getDaoSession().getStreetLightLocalBeanDao(); lightMapPresenter = new LightMapPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); controlPresenter = new LightControlPresenterImpl(this); } @@ -195,98 +193,87 @@ ToastHelper.showToast("操作失败", ToastHelper.ERROR); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021062401: + String lampId = (String) msg.obj; - private WeakReferenceHandler(LightOnMapFragment fragment) { - reference = new WeakReference<>(fragment); - } + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); + TextView lightStateView = popupView.findViewById(R.id.lightStateView); + TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); + TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); + TextView lightElecView = popupView.findViewById(R.id.lightElecView); + TextView lightVolView = popupView.findViewById(R.id.lightVolView); + TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); + ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - LightOnMapFragment fragment = reference.get(); - Context context = fragment.context; - switch (msg.what) { - case 2021062401: - String lampId = (String) msg.obj; + OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); + HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + OtherUtils.dismissLoadingDialog(); + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 200) { + JSONObject dataObject = jsonObject.getJSONObject("data"); - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); - TextView lightStateView = popupView.findViewById(R.id.lightStateView); - TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); - TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); - TextView lightElecView = popupView.findViewById(R.id.lightElecView); - TextView lightVolView = popupView.findViewById(R.id.lightVolView); - TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); - ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); + String statusName = dataObject.getString("statusName"); + lightStateView.setText(statusName); + lightAddressView.setText(dataObject.getString("address")); + lightStreetView.setText(dataObject.getString("streetName")); + lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); + lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); + lightTimeView.setText(dataObject.getString("latestTime")); - OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); - HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { - @Override - public void onSuccess(ResponseBody resultBean) { - OtherUtils.dismissLoadingDialog(); - try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - int code = jsonObject.getInt("code"); - if (code == 200) { - JSONObject dataObject = jsonObject.getJSONObject("data"); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); - String statusName = dataObject.getString("statusName"); - lightStateView.setText(statusName); - lightAddressView.setText(dataObject.getString("address")); - lightStreetView.setText(dataObject.getString("streetName")); - lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); - lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); - lightTimeView.setText(dataObject.getString("latestTime")); + lightSwitch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lampIds = new ArrayList<>(); + lampIds.add(Long.parseLong(lampId)); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(fragment.viewBinding.mapView); - - lightSwitch.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - List lampIds = new ArrayList<>(); - lampIds.add(Long.parseLong(lampId)); - - String controlType; - if (statusName.equals("离线")) { - controlType = "1"; - } else { - controlType = "0"; - } - fragment.controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + String controlType; + if (statusName.equals("离线")) { + controlType = "1"; + } else { + controlType = "0"; } - }); - } else { - ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); - } - } catch (JSONException | IOException e) { - ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); + controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + } + }); + } else { + ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); } + } catch (JSONException | IOException e) { + ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); } + } - @Override - public void onFailure(Throwable throwable) { - OtherUtils.dismissLoadingDialog(); - ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); - } - }); - break; - case 2021062402: - ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); - break; - default: - break; - } + @Override + public void onFailure(Throwable throwable) { + OtherUtils.dismissLoadingDialog(); + ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); + } + }); + break; + case 2021062402: + ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); + break; + default: + break; } - } + return true; + }; private void addPictureMarker(List points) { for (Point point : points) { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index 9cf4150..93aa7f8 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -2,7 +2,6 @@ import android.content.Context; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -23,6 +22,7 @@ import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -31,7 +31,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -77,7 +76,7 @@ wellListPresenter = new WellListPresenterImpl(this); wellListPresenter.onReadyRetrofitRequest(pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); optionWellPresenter = new OptionWellPresenterImpl(this); } @@ -103,62 +102,52 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WellListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WellListActivity activity = reference.get(); - if (msg.what == 20210628) { - if (activity.isRefresh || activity.isLoadMore) { - activity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210628) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); } else { - //首次加载数据 - if (activity.dataBeans.size() == 0) { - activity.viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); - } else { - activity.viewBinding.emptyView.hide(); - activity.adapter = new WellListAdapter(activity, activity.dataBeans); - activity.viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - activity.viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(activity, DividerItemDecoration.VERTICAL)); - activity.viewBinding.wellRecyclerView.setAdapter(activity.adapter); - activity.adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - WellListBean.DataBean.RowsBean rowsBean = activity.dataBeans.get(position); - String lng = rowsBean.getCoordinateX(); - String lat = rowsBean.getCoordinateY(); - OtherUtils.displayOnMap(activity, "others", lng, lat); + viewBinding.emptyView.hide(); + adapter = new WellListAdapter(this, dataBeans); + viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.wellRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + WellListBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + String lng = rowsBean.getCoordinateX(); + String lat = rowsBean.getCoordinateY(); + OtherUtils.displayOnMap(context, "others", lng, lat); + } + }); + adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { + @Override + public void onClick(int position) { + String bfzt = dataBeans.get(position).getBfzt(); + String bfztName; + if (bfzt.equals("0")) { + bfztName = "布防"; + bfzt = "1"; + } else if (bfzt.equals("1")) { + bfztName = "撤防"; + bfzt = "0"; + } else { + ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); + return; } - }); - activity.adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { - @Override - public void onClick(int position) { - String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName; - if (bfzt.equals("0")) { - bfztName = "布防"; - bfzt = "1"; - } else if (bfzt.equals("1")) { - bfztName = "撤防"; - bfzt = "0"; - } else { - ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); - return; - } - activity.showSingleOptionDialog(bfztName, activity.dataBeans.get(position).getId(), bfzt); - } - }); - } + showSingleOptionDialog(bfztName, dataBeans.get(position).getId(), bfzt); + } + }); } } } - } + return true; + }; //单个撤防/布防 private void showSingleOptionDialog(String bfztName, String id, String bfzt) { diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 280f13d..fd2feb6 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -7,14 +7,11 @@ import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.os.Handler; -import android.os.Message; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseActivity; @@ -24,6 +21,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.Point; @@ -41,7 +39,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.List; import java.util.concurrent.ExecutionException; @@ -74,7 +71,7 @@ Basemap baseMap = new Basemap(ArcGisMapCreator.createBaseLayer()); arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -138,38 +135,28 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity activity) { - reference = new WeakReference<>(activity); + private final Handler.Callback callback = msg -> { + if (msg.what == 2021060101) { + View popupView = LayoutInflater.from(this).inflate(R.layout.popu_worker, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); + TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); + userNameView.setText(userName); + signInTimeView.setText(createTime); + toiletNameView.setText(toiletName); + QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(this, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + } else if (msg.what == 2021060102) { + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - if (msg.what == 2021060101) { - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.viewBinding.mapView); - } else if (msg.what == 2021060102) { - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - } - } - } + return true; + }; private void addPictureMarker(Point point) { Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java index 0015d9e..fc056ef 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java @@ -14,8 +14,6 @@ import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseFragment; @@ -35,6 +33,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; @@ -57,7 +56,6 @@ import org.json.JSONObject; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -81,7 +79,7 @@ context = getContext(); lightLocalBeanDao = BaseApplication.getDaoSession().getStreetLightLocalBeanDao(); lightMapPresenter = new LightMapPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); controlPresenter = new LightControlPresenterImpl(this); } @@ -195,98 +193,87 @@ ToastHelper.showToast("操作失败", ToastHelper.ERROR); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021062401: + String lampId = (String) msg.obj; - private WeakReferenceHandler(LightOnMapFragment fragment) { - reference = new WeakReference<>(fragment); - } + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); + TextView lightStateView = popupView.findViewById(R.id.lightStateView); + TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); + TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); + TextView lightElecView = popupView.findViewById(R.id.lightElecView); + TextView lightVolView = popupView.findViewById(R.id.lightVolView); + TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); + ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - LightOnMapFragment fragment = reference.get(); - Context context = fragment.context; - switch (msg.what) { - case 2021062401: - String lampId = (String) msg.obj; + OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); + HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + OtherUtils.dismissLoadingDialog(); + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 200) { + JSONObject dataObject = jsonObject.getJSONObject("data"); - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); - TextView lightStateView = popupView.findViewById(R.id.lightStateView); - TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); - TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); - TextView lightElecView = popupView.findViewById(R.id.lightElecView); - TextView lightVolView = popupView.findViewById(R.id.lightVolView); - TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); - ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); + String statusName = dataObject.getString("statusName"); + lightStateView.setText(statusName); + lightAddressView.setText(dataObject.getString("address")); + lightStreetView.setText(dataObject.getString("streetName")); + lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); + lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); + lightTimeView.setText(dataObject.getString("latestTime")); - OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); - HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { - @Override - public void onSuccess(ResponseBody resultBean) { - OtherUtils.dismissLoadingDialog(); - try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - int code = jsonObject.getInt("code"); - if (code == 200) { - JSONObject dataObject = jsonObject.getJSONObject("data"); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); - String statusName = dataObject.getString("statusName"); - lightStateView.setText(statusName); - lightAddressView.setText(dataObject.getString("address")); - lightStreetView.setText(dataObject.getString("streetName")); - lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); - lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); - lightTimeView.setText(dataObject.getString("latestTime")); + lightSwitch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lampIds = new ArrayList<>(); + lampIds.add(Long.parseLong(lampId)); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(fragment.viewBinding.mapView); - - lightSwitch.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - List lampIds = new ArrayList<>(); - lampIds.add(Long.parseLong(lampId)); - - String controlType; - if (statusName.equals("离线")) { - controlType = "1"; - } else { - controlType = "0"; - } - fragment.controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + String controlType; + if (statusName.equals("离线")) { + controlType = "1"; + } else { + controlType = "0"; } - }); - } else { - ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); - } - } catch (JSONException | IOException e) { - ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); + controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + } + }); + } else { + ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); } + } catch (JSONException | IOException e) { + ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); } + } - @Override - public void onFailure(Throwable throwable) { - OtherUtils.dismissLoadingDialog(); - ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); - } - }); - break; - case 2021062402: - ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); - break; - default: - break; - } + @Override + public void onFailure(Throwable throwable) { + OtherUtils.dismissLoadingDialog(); + ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); + } + }); + break; + case 2021062402: + ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); + break; + default: + break; } - } + return true; + }; private void addPictureMarker(List points) { for (Point point : points) { diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java index d24b583..06db9a7 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java @@ -24,6 +24,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.SpatialReference; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,7 +40,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -70,7 +70,7 @@ arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -113,45 +113,34 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment fragment) { - reference = new WeakReference<>(fragment); + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051901: + PointPersonBean dataBean = (PointPersonBean) msg.obj; + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView deptNameView = popupView.findViewById(R.id.deptNameView); + TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); + TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); + userNameView.setText(dataBean.getPersonName()); + deptNameView.setText(dataBean.getPersonDept()); + phoneNumberView.setText(dataBean.getPersonPhone()); + lastTimeView.setText(dataBean.getPointTime()); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + break; + case 2021051902: + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); + break; } - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.viewBinding.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - } - } - } + return true; + }; @Override public void onlinePerson(OnlinePersonBean resultBean) { diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index 9cf4150..93aa7f8 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -2,7 +2,6 @@ import android.content.Context; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -23,6 +22,7 @@ import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -31,7 +31,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -77,7 +76,7 @@ wellListPresenter = new WellListPresenterImpl(this); wellListPresenter.onReadyRetrofitRequest(pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); optionWellPresenter = new OptionWellPresenterImpl(this); } @@ -103,62 +102,52 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WellListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WellListActivity activity = reference.get(); - if (msg.what == 20210628) { - if (activity.isRefresh || activity.isLoadMore) { - activity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210628) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); } else { - //首次加载数据 - if (activity.dataBeans.size() == 0) { - activity.viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); - } else { - activity.viewBinding.emptyView.hide(); - activity.adapter = new WellListAdapter(activity, activity.dataBeans); - activity.viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - activity.viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(activity, DividerItemDecoration.VERTICAL)); - activity.viewBinding.wellRecyclerView.setAdapter(activity.adapter); - activity.adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - WellListBean.DataBean.RowsBean rowsBean = activity.dataBeans.get(position); - String lng = rowsBean.getCoordinateX(); - String lat = rowsBean.getCoordinateY(); - OtherUtils.displayOnMap(activity, "others", lng, lat); + viewBinding.emptyView.hide(); + adapter = new WellListAdapter(this, dataBeans); + viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.wellRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + WellListBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + String lng = rowsBean.getCoordinateX(); + String lat = rowsBean.getCoordinateY(); + OtherUtils.displayOnMap(context, "others", lng, lat); + } + }); + adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { + @Override + public void onClick(int position) { + String bfzt = dataBeans.get(position).getBfzt(); + String bfztName; + if (bfzt.equals("0")) { + bfztName = "布防"; + bfzt = "1"; + } else if (bfzt.equals("1")) { + bfztName = "撤防"; + bfzt = "0"; + } else { + ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); + return; } - }); - activity.adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { - @Override - public void onClick(int position) { - String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName; - if (bfzt.equals("0")) { - bfztName = "布防"; - bfzt = "1"; - } else if (bfzt.equals("1")) { - bfztName = "撤防"; - bfzt = "0"; - } else { - ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); - return; - } - activity.showSingleOptionDialog(bfztName, activity.dataBeans.get(position).getId(), bfzt); - } - }); - } + showSingleOptionDialog(bfztName, dataBeans.get(position).getId(), bfzt); + } + }); } } } - } + return true; + }; //单个撤防/布防 private void showSingleOptionDialog(String bfztName, String id, String bfzt) { diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 280f13d..fd2feb6 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -7,14 +7,11 @@ import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.os.Handler; -import android.os.Message; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseActivity; @@ -24,6 +21,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.Point; @@ -41,7 +39,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.List; import java.util.concurrent.ExecutionException; @@ -74,7 +71,7 @@ Basemap baseMap = new Basemap(ArcGisMapCreator.createBaseLayer()); arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -138,38 +135,28 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity activity) { - reference = new WeakReference<>(activity); + private final Handler.Callback callback = msg -> { + if (msg.what == 2021060101) { + View popupView = LayoutInflater.from(this).inflate(R.layout.popu_worker, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); + TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); + userNameView.setText(userName); + signInTimeView.setText(createTime); + toiletNameView.setText(toiletName); + QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(this, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + } else if (msg.what == 2021060102) { + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - if (msg.what == 2021060101) { - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.viewBinding.mapView); - } else if (msg.what == 2021060102) { - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - } - } - } + return true; + }; private void addPictureMarker(Point point) { Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java index 0015d9e..fc056ef 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java @@ -14,8 +14,6 @@ import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseFragment; @@ -35,6 +33,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; @@ -57,7 +56,6 @@ import org.json.JSONObject; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -81,7 +79,7 @@ context = getContext(); lightLocalBeanDao = BaseApplication.getDaoSession().getStreetLightLocalBeanDao(); lightMapPresenter = new LightMapPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); controlPresenter = new LightControlPresenterImpl(this); } @@ -195,98 +193,87 @@ ToastHelper.showToast("操作失败", ToastHelper.ERROR); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021062401: + String lampId = (String) msg.obj; - private WeakReferenceHandler(LightOnMapFragment fragment) { - reference = new WeakReference<>(fragment); - } + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); + TextView lightStateView = popupView.findViewById(R.id.lightStateView); + TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); + TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); + TextView lightElecView = popupView.findViewById(R.id.lightElecView); + TextView lightVolView = popupView.findViewById(R.id.lightVolView); + TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); + ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - LightOnMapFragment fragment = reference.get(); - Context context = fragment.context; - switch (msg.what) { - case 2021062401: - String lampId = (String) msg.obj; + OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); + HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + OtherUtils.dismissLoadingDialog(); + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 200) { + JSONObject dataObject = jsonObject.getJSONObject("data"); - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); - TextView lightStateView = popupView.findViewById(R.id.lightStateView); - TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); - TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); - TextView lightElecView = popupView.findViewById(R.id.lightElecView); - TextView lightVolView = popupView.findViewById(R.id.lightVolView); - TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); - ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); + String statusName = dataObject.getString("statusName"); + lightStateView.setText(statusName); + lightAddressView.setText(dataObject.getString("address")); + lightStreetView.setText(dataObject.getString("streetName")); + lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); + lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); + lightTimeView.setText(dataObject.getString("latestTime")); - OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); - HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { - @Override - public void onSuccess(ResponseBody resultBean) { - OtherUtils.dismissLoadingDialog(); - try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - int code = jsonObject.getInt("code"); - if (code == 200) { - JSONObject dataObject = jsonObject.getJSONObject("data"); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); - String statusName = dataObject.getString("statusName"); - lightStateView.setText(statusName); - lightAddressView.setText(dataObject.getString("address")); - lightStreetView.setText(dataObject.getString("streetName")); - lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); - lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); - lightTimeView.setText(dataObject.getString("latestTime")); + lightSwitch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lampIds = new ArrayList<>(); + lampIds.add(Long.parseLong(lampId)); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(fragment.viewBinding.mapView); - - lightSwitch.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - List lampIds = new ArrayList<>(); - lampIds.add(Long.parseLong(lampId)); - - String controlType; - if (statusName.equals("离线")) { - controlType = "1"; - } else { - controlType = "0"; - } - fragment.controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + String controlType; + if (statusName.equals("离线")) { + controlType = "1"; + } else { + controlType = "0"; } - }); - } else { - ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); - } - } catch (JSONException | IOException e) { - ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); + controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + } + }); + } else { + ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); } + } catch (JSONException | IOException e) { + ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); } + } - @Override - public void onFailure(Throwable throwable) { - OtherUtils.dismissLoadingDialog(); - ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); - } - }); - break; - case 2021062402: - ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); - break; - default: - break; - } + @Override + public void onFailure(Throwable throwable) { + OtherUtils.dismissLoadingDialog(); + ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); + } + }); + break; + case 2021062402: + ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); + break; + default: + break; } - } + return true; + }; private void addPictureMarker(List points) { for (Point point : points) { diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java index d24b583..06db9a7 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java @@ -24,6 +24,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.SpatialReference; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,7 +40,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -70,7 +70,7 @@ arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -113,45 +113,34 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment fragment) { - reference = new WeakReference<>(fragment); + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051901: + PointPersonBean dataBean = (PointPersonBean) msg.obj; + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView deptNameView = popupView.findViewById(R.id.deptNameView); + TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); + TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); + userNameView.setText(dataBean.getPersonName()); + deptNameView.setText(dataBean.getPersonDept()); + phoneNumberView.setText(dataBean.getPersonPhone()); + lastTimeView.setText(dataBean.getPointTime()); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + break; + case 2021051902: + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); + break; } - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.viewBinding.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - } - } - } + return true; + }; @Override public void onlinePerson(OnlinePersonBean resultBean) { diff --git a/app/src/main/java/com/casic/dcms/utils/WeakReferenceHandler.java b/app/src/main/java/com/casic/dcms/utils/WeakReferenceHandler.java new file mode 100644 index 0000000..d635db6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WeakReferenceHandler.java @@ -0,0 +1,28 @@ +package com.casic.dcms.utils; + +import android.os.Handler; +import android.os.Looper; +import android.os.Message; + +import java.lang.ref.WeakReference; + +public class WeakReferenceHandler extends Handler { + + private final WeakReference mWeakReference; + + public WeakReferenceHandler(Callback callback) { + mWeakReference = new WeakReference<>(callback); + } + + public WeakReferenceHandler(Callback callback, Looper looper) { + super(looper); + mWeakReference = new WeakReference<>(callback); + } + + @Override + public void handleMessage(Message msg) { + if (mWeakReference != null && mWeakReference.get() != null) { + mWeakReference.get().handleMessage(msg); + } + } +} diff --git a/.idea/misc.xml b/.idea/misc.xml index c4e854b..cf5266d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -22,6 +22,7 @@ + @@ -50,6 +51,7 @@ + @@ -77,6 +79,7 @@ + @@ -95,6 +98,7 @@ + @@ -118,14 +122,14 @@ - + - + diff --git a/app/build.gradle b/app/build.gradle index 0d88385..a89466d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,10 +44,10 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //腾讯Android UI框架 diff --git a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java index 02c6875..37b76ac 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/impl/CaseHandledListModelImpl.java @@ -26,7 +26,7 @@ */ @Override public Subscription sendCaseHandledListRequest(int offset) { - Observable observable = RetrofitServiceManager.getCaseHandledListResult(offset); + Observable observable = RetrofitServiceManager.handleCaseResult(offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 550750c..0c77aea 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -28,7 +28,7 @@ import com.casic.dcms.mvp.view.IGetCaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; import com.casic.dcms.ui.fragment.handle.CaseHandledFragment; -import com.casic.dcms.ui.fragment.handle.CaseTimeoutFragment; +import com.casic.dcms.ui.fragment.handle.CaseOverTimeFragment; import com.casic.dcms.ui.fragment.handle.CaseTodoFragment; import com.casic.dcms.ui.fragment.handle.CaseUrgentFragment; import com.casic.dcms.utils.Constant; @@ -336,7 +336,7 @@ ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); switch (title) { case "超时案卷": - CaseTimeoutFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); + CaseOverTimeFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); CaseHandledFragment.sendEmptyMessage(Constant.CASE_HANDLE_OK); break; case "紧急案卷": diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 0e13b10..6b721eb 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -1,8 +1,8 @@ package com.casic.dcms.ui; +import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DividerItemDecoration; @@ -16,16 +16,17 @@ import com.casic.dcms.mvp.view.ISearchCaseResultView; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; public class CaseListResultActivity extends AndroidxBaseActivity implements ISearchCaseResultView { + private final Context context = this; private CaseListPresenterImpl caseListPresenter; private CaseListResultAdapter adapter; private String typeCode; @@ -53,7 +54,7 @@ @Override protected void initData() { caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); eorc = getIntent().getStringExtra("eorc"); typeCode = getIntent().getStringExtra("typeCode"); typeDetailCode = getIntent().getStringExtra("typeDetailCode"); @@ -93,44 +94,33 @@ /** * 弱应用Handler,防止内存泄漏 */ - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210425) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new CaseListResultAdapter(context, dataBeans); + viewBinding.caseRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.caseRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.caseRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override public void showProgress() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 6e374cd..626720a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -1,6 +1,7 @@ package com.casic.dcms.ui; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -12,7 +13,6 @@ import android.view.MotionEvent; import android.widget.RadioGroup; -import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import com.casic.dcms.R; @@ -32,6 +32,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; @@ -48,7 +49,6 @@ import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; import com.esri.arcgisruntime.util.ListenableList; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -58,6 +58,7 @@ implements RadioGroup.OnCheckedChangeListener, IHandleCaseView, IVerifyCaseView, ICheckCaseView { private static final String TAG = "CaseOnMapActivity"; + private final Context context = this; private HandleCasePresenterImpl handleCasePresenter; private VerifyCasePresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; @@ -105,7 +106,7 @@ graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); //handler弱引用,防止内存泄漏 - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -150,48 +151,38 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051401: + String caseId = (String) msg.obj; + new AlertControlDialog.Builder() + .setContext(context) + .setTitle("查看案卷详情") + .setMessage("ID:" + caseId) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { + @Override + public void onConfirmClick() { + Intent intent = new Intent(context, CaseDetailActivity.class); + intent.putExtra("id", caseId); + startActivity(intent); + } - private WeakReferenceHandler(CaseOnMapActivity activity) { - reference = new WeakReference<>(activity); + @Override + public void onCancelClick() { + + } + }).build().show(); + break; + case 2021051402: + ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); + break; + default: + break; } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseOnMapActivity onMapActivity = reference.get(); - switch (msg.what) { - case 2021051401: - String caseId = (String) msg.obj; - new AlertControlDialog.Builder() - .setContext(onMapActivity) - .setTitle("查看案卷详情") - .setMessage("ID:" + caseId) - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(new AlertControlDialog.OnDialogButtonClickListener() { - @Override - public void onConfirmClick() { - Intent intent = new Intent(onMapActivity, CaseDetailActivity.class); - intent.putExtra("id", caseId); - onMapActivity.startActivity(intent); - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - case 2021051402: - ToastHelper.showToast("此附近无案卷,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } + return true; + }; @Override public void onCheckedChanged(RadioGroup group, int checkedId) { diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 5c037c4..6289181 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.text.TextUtils; import android.view.View; @@ -21,12 +20,12 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -53,7 +52,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new CleanRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); } @@ -139,59 +138,48 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(context, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR); + return; } - }); - } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); } } } - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/MainActivity.java b/app/src/main/java/com/casic/dcms/ui/MainActivity.java index 6f53e4e..4684efd 100644 --- a/app/src/main/java/com/casic/dcms/ui/MainActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MainActivity.java @@ -50,6 +50,7 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.google.android.material.navigation.NavigationBarView; import com.google.gson.Gson; @@ -57,7 +58,6 @@ import com.igexin.sdk.PushManager; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -89,7 +89,7 @@ protected void initData() { //个推初始化 PushManager.getInstance().initialize(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); uploadPositionPresenter = new UploadPositionPresenterImpl(this); registerPresenter = new PushRegisterPresenterImpl(this); mapConfigPresenter = new GetMapConfigPresenterImpl(this); @@ -203,59 +203,48 @@ viewBinding.mainViewPager.setAdapter(mainPageAdapter); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MainActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MainActivity mainActivity = reference.get(); - if (msg.what == Constant.PUSH_REGISTER) { - String clientId = (String) msg.obj; - Log.d(TAG, "注册个推Client: $clientId"); - mainActivity.registerPresenter.onReadyRetrofitRequest(clientId); - } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { - //显示小红点 - try { - mainActivity.updateMessageNumber(); - } catch (NullPointerException e) { - e.printStackTrace(); - } - NoticeBean noticeBean = (NoticeBean) msg.obj; - NotificationHelper notificationHelper = NotificationHelper.getInstance(mainActivity); - Notification notification = notificationHelper.createDefault( - noticeBean.getTitle(), - noticeBean.getContent(), - noticeBean.getCaseId(), - CaseDetailActivity.class - ); - notificationHelper.push(1, notification); - } else if (msg.what == Constant.MESSAGE_NUMBER) { - mainActivity.updateMessageNumber(); - } else if (msg.what == Constant.UPLOAD_LOCATION) { - AMapLocation aMapLocation = (AMapLocation) msg.obj; - try { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - mainActivity.uploadPositionPresenter.onReadyRetrofitRequest(mainActivity.imei, - String.valueOf(gcjToWgs[1]), - String.valueOf(gcjToWgs[0])); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } else if (msg.what == Constant.LOGIN_OUT) { - Log.d(TAG, "退出登录"); - //回到登录页 - SaveKeyValues.putValue("autoLogin", false); - mainActivity.startActivity(new Intent(mainActivity, LoginActivity.class)); - mainActivity.finish(); + private final Handler.Callback callback = msg -> { + if (msg.what == Constant.PUSH_REGISTER) { + String clientId = (String) msg.obj; + Log.d(TAG, "注册个推Client: $clientId"); + registerPresenter.onReadyRetrofitRequest(clientId); + } else if (msg.what == Constant.PUSH_CREATE_NOTIFICATION) { + //显示小红点 + try { + updateMessageNumber(); + } catch (NullPointerException e) { + e.printStackTrace(); } + NoticeBean noticeBean = (NoticeBean) msg.obj; + NotificationHelper notificationHelper = NotificationHelper.getInstance(this); + Notification notification = notificationHelper.createDefault( + noticeBean.getTitle(), + noticeBean.getContent(), + noticeBean.getCaseId(), + CaseDetailActivity.class + ); + notificationHelper.push(1, notification); + } else if (msg.what == Constant.MESSAGE_NUMBER) { + updateMessageNumber(); + } else if (msg.what == Constant.UPLOAD_LOCATION) { + AMapLocation aMapLocation = (AMapLocation) msg.obj; + try { + double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); + uploadPositionPresenter.onReadyRetrofitRequest(imei, + String.valueOf(gcjToWgs[1]), + String.valueOf(gcjToWgs[0])); + } catch (NullPointerException e) { + e.printStackTrace(); + } + } else if (msg.what == Constant.LOGIN_OUT) { + Log.d(TAG, "退出登录"); + //回到登录页 + SaveKeyValues.putValue("autoLogin", false); + startActivity(new Intent(this, LoginActivity.class)); + finish(); } - } + return true; + }; private void updateMessageNumber() { List list = BaseApplication.getDaoSession() diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java index e587dd7..ef03adb 100644 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java @@ -1,7 +1,6 @@ package com.casic.dcms.ui; import android.os.Handler; -import android.os.Message; import android.view.View; import androidx.annotation.NonNull; @@ -17,12 +16,12 @@ import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.datepicker.DatePopupWindow; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -48,7 +47,7 @@ @Override protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); recordPresenter = new MaintainRecordPresenterImpl(this); recordPresenter.onReadyRetrofitRequest("", "", pageIndex); } @@ -128,37 +127,25 @@ OtherUtils.dismissLoadingDialog(); } - private static class WeakReferenceHandler extends Handler { - - private final WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.recordRecyclerView.setAdapter(resultActivity.adapter); - } + viewBinding.emptyView.hide(); + adapter = new MaintainRecordAdapter(this, dataBeans); + viewBinding.recordRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.recordRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.recordRecyclerView.setAdapter(adapter); } } } - - } + return true; + }; @Override protected void onDestroy() { diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index 028ee6f..b9a8d21 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -25,6 +24,7 @@ import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.CancelAlarmDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -33,7 +33,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -83,7 +82,7 @@ alarmListPresenter = new AlarmListPresenterImpl(this); alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); cancelAlarmPresenter = new CancelAlarmPresenterImpl(this); } @@ -109,41 +108,31 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PipelineManagerActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PipelineManagerActivity resultActivity = reference.get(); - if (msg.what == 20210626) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210626) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("设备状态很好,没有任何报警", null); } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.viewBinding.emptyView.show("设备状态很好,没有任何报警", null); - } else { - resultActivity.viewBinding.emptyView.hide(); - resultActivity.adapter = new AlarmListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.viewBinding.warningRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { - @Override - public void onClick(int position) { - resultActivity.showSingleCancelDialog(resultActivity.dataBeans.get(position).getJobId()); - } - }); - } + viewBinding.emptyView.hide(); + adapter = new AlarmListAdapter(this, dataBeans); + viewBinding.warningRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.warningRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.warningRecyclerView.setAdapter(adapter); + adapter.setOnCancelClickListener(new AlarmListAdapter.OnCancelClickListener() { + @Override + public void onClick(int position) { + showSingleCancelDialog(dataBeans.get(position).getJobId()); + } + }); } } } - } + return true; + }; //单个消警 private void showSingleCancelDialog(String jobId) { diff --git a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java index 9cf4150..93aa7f8 100644 --- a/app/src/main/java/com/casic/dcms/ui/WellListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WellListActivity.java @@ -2,7 +2,6 @@ import android.content.Context; import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; @@ -23,6 +22,7 @@ import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.widgets.AlertControlDialog; import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.widget.popup.QMUIPopup; @@ -31,7 +31,6 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; import com.scwang.smartrefresh.layout.listener.OnRefreshListener; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -77,7 +76,7 @@ wellListPresenter = new WellListPresenterImpl(this); wellListPresenter.onReadyRetrofitRequest(pageIndex); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); optionWellPresenter = new OptionWellPresenterImpl(this); } @@ -103,62 +102,52 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WellListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WellListActivity activity = reference.get(); - if (msg.what == 20210628) { - if (activity.isRefresh || activity.isLoadMore) { - activity.adapter.notifyDataSetChanged(); + private final Handler.Callback callback = msg -> { + if (msg.what == 20210628) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); } else { - //首次加载数据 - if (activity.dataBeans.size() == 0) { - activity.viewBinding.emptyView.show("抱歉,无法为您查到窨井数据", null); - } else { - activity.viewBinding.emptyView.hide(); - activity.adapter = new WellListAdapter(activity, activity.dataBeans); - activity.viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - activity.viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(activity, DividerItemDecoration.VERTICAL)); - activity.viewBinding.wellRecyclerView.setAdapter(activity.adapter); - activity.adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - WellListBean.DataBean.RowsBean rowsBean = activity.dataBeans.get(position); - String lng = rowsBean.getCoordinateX(); - String lat = rowsBean.getCoordinateY(); - OtherUtils.displayOnMap(activity, "others", lng, lat); + viewBinding.emptyView.hide(); + adapter = new WellListAdapter(this, dataBeans); + viewBinding.wellRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + viewBinding.wellRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); + viewBinding.wellRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new WellListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + WellListBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + String lng = rowsBean.getCoordinateX(); + String lat = rowsBean.getCoordinateY(); + OtherUtils.displayOnMap(context, "others", lng, lat); + } + }); + adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { + @Override + public void onClick(int position) { + String bfzt = dataBeans.get(position).getBfzt(); + String bfztName; + if (bfzt.equals("0")) { + bfztName = "布防"; + bfzt = "1"; + } else if (bfzt.equals("1")) { + bfztName = "撤防"; + bfzt = "0"; + } else { + ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); + return; } - }); - activity.adapter.setOnOptionClickListener(new WellListAdapter.OnOptionClickListener() { - @Override - public void onClick(int position) { - String bfzt = activity.dataBeans.get(position).getBfzt(); - String bfztName; - if (bfzt.equals("0")) { - bfztName = "布防"; - bfzt = "1"; - } else if (bfzt.equals("1")) { - bfztName = "撤防"; - bfzt = "0"; - } else { - ToastHelper.showToast("窨井状态错误,无法进行撤防或者布防", ToastHelper.ERROR); - return; - } - activity.showSingleOptionDialog(bfztName, activity.dataBeans.get(position).getId(), bfzt); - } - }); - } + showSingleOptionDialog(bfztName, dataBeans.get(position).getId(), bfzt); + } + }); } } } - } + return true; + }; //单个撤防/布防 private void showSingleOptionDialog(String bfztName, String id, String bfzt) { diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 280f13d..fd2feb6 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -7,14 +7,11 @@ import android.graphics.drawable.BitmapDrawable; import android.location.Location; import android.os.Handler; -import android.os.Message; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseActivity; @@ -24,6 +21,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.Point; @@ -41,7 +39,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.List; import java.util.concurrent.ExecutionException; @@ -74,7 +71,7 @@ Basemap baseMap = new Basemap(ArcGisMapCreator.createBaseLayer()); arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -138,38 +135,28 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity activity) { - reference = new WeakReference<>(activity); + private final Handler.Callback callback = msg -> { + if (msg.what == 2021060101) { + View popupView = LayoutInflater.from(this).inflate(R.layout.popu_worker, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); + TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); + userNameView.setText(userName); + signInTimeView.setText(createTime); + toiletNameView.setText(toiletName); + QMUIPopups.popup(this, QMUIDisplayHelper.dp2px(this, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(this, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + } else if (msg.what == 2021060102) { + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - if (msg.what == 2021060101) { - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.viewBinding.mapView); - } else if (msg.what == 2021060102) { - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - } - } - } + return true; + }; private void addPictureMarker(Point point) { Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java index 0015d9e..fc056ef 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/LightOnMapFragment.java @@ -14,8 +14,6 @@ import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.NonNull; - import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.base.AndroidxBaseFragment; @@ -35,6 +33,7 @@ import com.casic.dcms.utils.LocationHelper; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.casic.dcms.utils.callback.IHttpRequestListener; import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.concurrent.ListenableFuture; @@ -57,7 +56,6 @@ import org.json.JSONObject; import java.io.IOException; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -81,7 +79,7 @@ context = getContext(); lightLocalBeanDao = BaseApplication.getDaoSession().getStreetLightLocalBeanDao(); lightMapPresenter = new LightMapPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); controlPresenter = new LightControlPresenterImpl(this); } @@ -195,98 +193,87 @@ ToastHelper.showToast("操作失败", ToastHelper.ERROR); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021062401: + String lampId = (String) msg.obj; - private WeakReferenceHandler(LightOnMapFragment fragment) { - reference = new WeakReference<>(fragment); - } + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); + TextView lightStateView = popupView.findViewById(R.id.lightStateView); + TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); + TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); + TextView lightElecView = popupView.findViewById(R.id.lightElecView); + TextView lightVolView = popupView.findViewById(R.id.lightVolView); + TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); + ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - LightOnMapFragment fragment = reference.get(); - Context context = fragment.context; - switch (msg.what) { - case 2021062401: - String lampId = (String) msg.obj; + OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); + HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { + @Override + public void onSuccess(ResponseBody resultBean) { + OtherUtils.dismissLoadingDialog(); + try { + String string = resultBean.string(); + JSONObject jsonObject = new JSONObject(string); + int code = jsonObject.getInt("code"); + if (code == 200) { + JSONObject dataObject = jsonObject.getJSONObject("data"); - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_street_light, null); - TextView lightStateView = popupView.findViewById(R.id.lightStateView); - TextView lightAddressView = popupView.findViewById(R.id.lightAddressView); - TextView lightStreetView = popupView.findViewById(R.id.lightStreetView); - TextView lightElecView = popupView.findViewById(R.id.lightElecView); - TextView lightVolView = popupView.findViewById(R.id.lightVolView); - TextView lightTimeView = popupView.findViewById(R.id.lightTimeView); - ImageView lightSwitch = popupView.findViewById(R.id.lightSwitch); + String statusName = dataObject.getString("statusName"); + lightStateView.setText(statusName); + lightAddressView.setText(dataObject.getString("address")); + lightStreetView.setText(dataObject.getString("streetName")); + lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); + lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); + lightTimeView.setText(dataObject.getString("latestTime")); - OtherUtils.showLoadingDialog(context, "路灯详情获取中,请稍后..."); - HttpRequestHelper.doRequest(Constant.LIGHT_DETAIL, lampId, new IHttpRequestListener() { - @Override - public void onSuccess(ResponseBody resultBean) { - OtherUtils.dismissLoadingDialog(); - try { - String string = resultBean.string(); - JSONObject jsonObject = new JSONObject(string); - int code = jsonObject.getInt("code"); - if (code == 200) { - JSONObject dataObject = jsonObject.getJSONObject("data"); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); - String statusName = dataObject.getString("statusName"); - lightStateView.setText(statusName); - lightAddressView.setText(dataObject.getString("address")); - lightStreetView.setText(dataObject.getString("streetName")); - lightElecView.setText(String.valueOf(dataObject.getDouble("latestElec"))); - lightVolView.setText(String.valueOf(dataObject.getDouble("latestVol"))); - lightTimeView.setText(dataObject.getString("latestTime")); + lightSwitch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + List lampIds = new ArrayList<>(); + lampIds.add(Long.parseLong(lampId)); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 280)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(fragment.viewBinding.mapView); - - lightSwitch.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - List lampIds = new ArrayList<>(); - lampIds.add(Long.parseLong(lampId)); - - String controlType; - if (statusName.equals("离线")) { - controlType = "1"; - } else { - controlType = "0"; - } - fragment.controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + String controlType; + if (statusName.equals("离线")) { + controlType = "1"; + } else { + controlType = "0"; } - }); - } else { - ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); - } - } catch (JSONException | IOException e) { - ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); + controlPresenter.onReadyRetrofitRequest(lampIds, controlType); + } + }); + } else { + ToastHelper.showToast("服务器异常,请重新选点", ToastHelper.ERROR); } + } catch (JSONException | IOException e) { + ToastHelper.showToast("解析失败,请重新选点", ToastHelper.ERROR); } + } - @Override - public void onFailure(Throwable throwable) { - OtherUtils.dismissLoadingDialog(); - ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); - } - }); - break; - case 2021062402: - ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); - break; - default: - break; - } + @Override + public void onFailure(Throwable throwable) { + OtherUtils.dismissLoadingDialog(); + ToastHelper.showToast("网络连接失败,请重新选点", ToastHelper.ERROR); + } + }); + break; + case 2021062402: + ToastHelper.showToast("此附近无路灯,请重新选点", ToastHelper.ERROR); + break; + default: + break; } - } + return true; + }; private void addPictureMarker(List points) { for (Point point : points) { diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java index d24b583..06db9a7 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java @@ -24,6 +24,7 @@ import com.casic.dcms.utils.ArcGisMapCreator; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.utils.WeakReferenceHandler; import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.geometry.SpatialReference; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,7 +40,6 @@ import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopups; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; @@ -70,7 +70,7 @@ arcGISMap.setBasemap(baseMap); viewBinding.mapView.setMap(arcGISMap); graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); + weakReferenceHandler = new WeakReferenceHandler(callback); } @SuppressLint("ClickableViewAccessibility") @@ -113,45 +113,34 @@ }); } - private static class WeakReferenceHandler extends Handler { - private final WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment fragment) { - reference = new WeakReference<>(fragment); + private final Handler.Callback callback = msg -> { + switch (msg.what) { + case 2021051901: + PointPersonBean dataBean = (PointPersonBean) msg.obj; + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); + TextView userNameView = popupView.findViewById(R.id.userNameView); + TextView deptNameView = popupView.findViewById(R.id.deptNameView); + TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); + TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); + userNameView.setText(dataBean.getPersonName()); + deptNameView.setText(dataBean.getPersonDept()); + phoneNumberView.setText(dataBean.getPersonPhone()); + lastTimeView.setText(dataBean.getPointTime()); + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(viewBinding.mapView); + break; + case 2021051902: + ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); + break; } - - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.viewBinding.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - } - } - } + return true; + }; @Override public void onlinePerson(OnlinePersonBean resultBean) { diff --git a/app/src/main/java/com/casic/dcms/utils/WeakReferenceHandler.java b/app/src/main/java/com/casic/dcms/utils/WeakReferenceHandler.java new file mode 100644 index 0000000..d635db6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/WeakReferenceHandler.java @@ -0,0 +1,28 @@ +package com.casic.dcms.utils; + +import android.os.Handler; +import android.os.Looper; +import android.os.Message; + +import java.lang.ref.WeakReference; + +public class WeakReferenceHandler extends Handler { + + private final WeakReference mWeakReference; + + public WeakReferenceHandler(Callback callback) { + mWeakReference = new WeakReference<>(callback); + } + + public WeakReferenceHandler(Callback callback, Looper looper) { + super(looper); + mWeakReference = new WeakReference<>(callback); + } + + @Override + public void handleMessage(Message msg) { + if (mWeakReference != null && mWeakReference.get() != null) { + mWeakReference.get().handleMessage(msg); + } + } +} diff --git a/build.gradle b/build.gradle index 92c1c9a..38673b5 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ google() } dependencies { - classpath 'com.android.tools.build:gradle:4.0.1' + classpath 'com.android.tools.build:gradle:3.6.3' classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files