diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
index bdc28e4..dcb240c 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_working.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView
+import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class WorkingFragment : KotlinBaseFragment() {
@@ -55,27 +56,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.workingRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ workingRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.workingRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ workingRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
@@ -95,7 +97,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -104,13 +105,13 @@
}
override fun initEvent() {
- baseView.workingRefreshLayout.setOnRefreshListener {
+ workingRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.workingRefreshLayout.setOnLoadMoreListener {
+ workingRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -123,53 +124,50 @@
private val callback = Handler.Callback {
if (it.what == 2022071101) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}")
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.workingRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.workingRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ workingRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ workingRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
index bdc28e4..dcb240c 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_working.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView
+import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class WorkingFragment : KotlinBaseFragment() {
@@ -55,27 +56,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.workingRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ workingRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.workingRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ workingRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
@@ -95,7 +97,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -104,13 +105,13 @@
}
override fun initEvent() {
- baseView.workingRefreshLayout.setOnRefreshListener {
+ workingRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.workingRefreshLayout.setOnLoadMoreListener {
+ workingRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -123,53 +124,50 @@
private val callback = Handler.Callback {
if (it.what == 2022071101) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}")
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.workingRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.workingRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ workingRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ workingRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index ace8e16..3700a3d 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -7,6 +7,7 @@
val USER_PERMISSIONS = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
index bdc28e4..dcb240c 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_working.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView
+import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class WorkingFragment : KotlinBaseFragment() {
@@ -55,27 +56,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.workingRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ workingRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.workingRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ workingRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
@@ -95,7 +97,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -104,13 +105,13 @@
}
override fun initEvent() {
- baseView.workingRefreshLayout.setOnRefreshListener {
+ workingRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.workingRefreshLayout.setOnLoadMoreListener {
+ workingRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -123,53 +124,50 @@
private val callback = Handler.Callback {
if (it.what == 2022071101) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}")
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.workingRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.workingRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ workingRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ workingRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index ace8e16..3700a3d 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -7,6 +7,7 @@
val USER_PERMISSIONS = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
index 080b5d8..2af6cf4 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
@@ -33,8 +33,16 @@
import com.pengxh.kt.lite.extensions.getSystemService
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_hikvision.*
-import kotlinx.android.synthetic.main.include_option_title.*
+import kotlinx.android.synthetic.main.activity_hikvision.configButton
+import kotlinx.android.synthetic.main.activity_hikvision.configSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.netSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.regionView
+import kotlinx.android.synthetic.main.activity_hikvision.rootView
+import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView
+import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView
+import kotlinx.android.synthetic.main.include_option_title.leftBackView
+import kotlinx.android.synthetic.main.include_option_title.rightOptionView
+import kotlinx.android.synthetic.main.include_option_title.titleView
class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback {
@@ -348,8 +356,8 @@
}
override fun onDestroy() {
+ super.onDestroy()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
index bdc28e4..dcb240c 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_working.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView
+import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class WorkingFragment : KotlinBaseFragment() {
@@ -55,27 +56,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.workingRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ workingRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.workingRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ workingRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
@@ -95,7 +97,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -104,13 +105,13 @@
}
override fun initEvent() {
- baseView.workingRefreshLayout.setOnRefreshListener {
+ workingRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.workingRefreshLayout.setOnLoadMoreListener {
+ workingRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -123,53 +124,50 @@
private val callback = Handler.Callback {
if (it.what == 2022071101) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}")
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.workingRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.workingRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ workingRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ workingRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index ace8e16..3700a3d 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -7,6 +7,7 @@
val USER_PERMISSIONS = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
index 080b5d8..2af6cf4 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
@@ -33,8 +33,16 @@
import com.pengxh.kt.lite.extensions.getSystemService
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_hikvision.*
-import kotlinx.android.synthetic.main.include_option_title.*
+import kotlinx.android.synthetic.main.activity_hikvision.configButton
+import kotlinx.android.synthetic.main.activity_hikvision.configSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.netSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.regionView
+import kotlinx.android.synthetic.main.activity_hikvision.rootView
+import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView
+import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView
+import kotlinx.android.synthetic.main.include_option_title.leftBackView
+import kotlinx.android.synthetic.main.include_option_title.rightOptionView
+import kotlinx.android.synthetic.main.include_option_title.titleView
class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback {
@@ -348,8 +356,8 @@
}
override fun onDestroy() {
+ super.onDestroy()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
index 1066448..1b53f7e 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
@@ -12,7 +12,12 @@
import android.os.Message
import androidx.lifecycle.ViewModelProvider
import com.casic.br.operationsite.R
-import com.casic.br.operationsite.extensions.*
+import com.casic.br.operationsite.extensions.createCloseLightCommand
+import com.casic.br.operationsite.extensions.createOpenLightCommand
+import com.casic.br.operationsite.extensions.createStartCommand
+import com.casic.br.operationsite.extensions.createStopCommand
+import com.casic.br.operationsite.extensions.initLayoutImmersionBar
+import com.casic.br.operationsite.extensions.splitGasParam
import com.casic.br.operationsite.utils.DeviceType
import com.casic.br.operationsite.utils.LocaleConstant
import com.casic.br.operationsite.utils.RuntimeCache
@@ -28,8 +33,18 @@
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_methane.*
-import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.activity_methane.addressView
+import kotlinx.android.synthetic.main.activity_methane.configButton
+import kotlinx.android.synthetic.main.activity_methane.configSelectView
+import kotlinx.android.synthetic.main.activity_methane.connectButton
+import kotlinx.android.synthetic.main.activity_methane.netSelectView
+import kotlinx.android.synthetic.main.activity_methane.rootView
+import kotlinx.android.synthetic.main.activity_methane.steeringWheelView
+import kotlinx.android.synthetic.main.activity_methane.tcpStateView
+import kotlinx.android.synthetic.main.activity_methane.thresholdView
+import kotlinx.android.synthetic.main.activity_methane.warningSwitch
+import kotlinx.android.synthetic.main.include_base_title.leftBackView
+import kotlinx.android.synthetic.main.include_base_title.titleView
class MethaneActivity : KotlinBaseActivity(), Handler.Callback {
@@ -266,9 +281,9 @@
}
override fun onDestroy() {
+ super.onDestroy()
SocketManager.get.close()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
index bdc28e4..dcb240c 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_working.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView
+import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class WorkingFragment : KotlinBaseFragment() {
@@ -55,27 +56,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.workingRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ workingRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.workingRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ workingRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
@@ -95,7 +97,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -104,13 +105,13 @@
}
override fun initEvent() {
- baseView.workingRefreshLayout.setOnRefreshListener {
+ workingRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.workingRefreshLayout.setOnLoadMoreListener {
+ workingRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -123,53 +124,50 @@
private val callback = Handler.Callback {
if (it.what == 2022071101) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}")
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.workingRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.workingRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ workingRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ workingRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index ace8e16..3700a3d 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -7,6 +7,7 @@
val USER_PERMISSIONS = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
index 080b5d8..2af6cf4 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
@@ -33,8 +33,16 @@
import com.pengxh.kt.lite.extensions.getSystemService
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_hikvision.*
-import kotlinx.android.synthetic.main.include_option_title.*
+import kotlinx.android.synthetic.main.activity_hikvision.configButton
+import kotlinx.android.synthetic.main.activity_hikvision.configSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.netSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.regionView
+import kotlinx.android.synthetic.main.activity_hikvision.rootView
+import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView
+import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView
+import kotlinx.android.synthetic.main.include_option_title.leftBackView
+import kotlinx.android.synthetic.main.include_option_title.rightOptionView
+import kotlinx.android.synthetic.main.include_option_title.titleView
class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback {
@@ -348,8 +356,8 @@
}
override fun onDestroy() {
+ super.onDestroy()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
index 1066448..1b53f7e 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
@@ -12,7 +12,12 @@
import android.os.Message
import androidx.lifecycle.ViewModelProvider
import com.casic.br.operationsite.R
-import com.casic.br.operationsite.extensions.*
+import com.casic.br.operationsite.extensions.createCloseLightCommand
+import com.casic.br.operationsite.extensions.createOpenLightCommand
+import com.casic.br.operationsite.extensions.createStartCommand
+import com.casic.br.operationsite.extensions.createStopCommand
+import com.casic.br.operationsite.extensions.initLayoutImmersionBar
+import com.casic.br.operationsite.extensions.splitGasParam
import com.casic.br.operationsite.utils.DeviceType
import com.casic.br.operationsite.utils.LocaleConstant
import com.casic.br.operationsite.utils.RuntimeCache
@@ -28,8 +33,18 @@
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_methane.*
-import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.activity_methane.addressView
+import kotlinx.android.synthetic.main.activity_methane.configButton
+import kotlinx.android.synthetic.main.activity_methane.configSelectView
+import kotlinx.android.synthetic.main.activity_methane.connectButton
+import kotlinx.android.synthetic.main.activity_methane.netSelectView
+import kotlinx.android.synthetic.main.activity_methane.rootView
+import kotlinx.android.synthetic.main.activity_methane.steeringWheelView
+import kotlinx.android.synthetic.main.activity_methane.tcpStateView
+import kotlinx.android.synthetic.main.activity_methane.thresholdView
+import kotlinx.android.synthetic.main.activity_methane.warningSwitch
+import kotlinx.android.synthetic.main.include_base_title.leftBackView
+import kotlinx.android.synthetic.main.include_base_title.titleView
class MethaneActivity : KotlinBaseActivity(), Handler.Callback {
@@ -266,9 +281,9 @@
}
override fun onDestroy() {
+ super.onDestroy()
SocketManager.get.close()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 7408bb3..07b29b5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.6.4'
+ classpath 'com.android.tools.build:gradle:4.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
@@ -23,6 +23,6 @@
}
}
-task clean(type: Delete) {
+tasks.register('clean', Delete) {
delete rootProject.buildDir
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index db2f821..d549156 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,14 +13,14 @@
keyPassword '123456789'
}
}
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
applicationId "com.casic.br.operationsite"
minSdkVersion 23
- targetSdkVersion 31
- versionCode 1
- versionName "1.0.0.0"
+ targetSdkVersion 33
+ versionCode 1001
+ versionName "1.0.0.1"
ndk {
abiFilters 'armeabi-v7a', "arm64-v8a"
@@ -58,8 +58,8 @@
enabled true
}
- applicationVariants.all { variant ->
- variant.outputs.all {
+ applicationVariants.configureEach { variant ->
+ variant.outputs.configureEach {
outputFileName = "XCGZ_" + getBuildDate() + "_" + defaultConfig.versionName + ".apk"
}
}
@@ -73,7 +73,7 @@
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//基础依赖库
- implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.8'
+ implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.9'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'com.google.android.material:material:1.6.1'
@@ -86,12 +86,13 @@
//空白页
implementation 'com.qmuiteam:qmui:2.0.0-alpha10'
implementation 'com.qmuiteam:arch:0.3.1'
- //MVVM+LiveData
- implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
- implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
+ def vm_version = "2.5.1"
//Kotlin协程
- implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
+ implementation "androidx.lifecycle:lifecycle-runtime-ktx:${vm_version}"
+ //MVVM+LiveData
+ implementation "androidx.lifecycle:lifecycle-livedata-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${vm_version}"
+ implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
@@ -108,7 +109,7 @@
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
//官方Json解析库
- implementation 'com.google.code.gson:gson:2.9.0'
+ implementation 'com.google.code.gson:gson:2.10.1'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
//高德地图
@@ -116,11 +117,14 @@
//高德地图搜索
implementation 'com.amap.api:search:8.1.0'
//CameraX
- def CameraX_version = '1.1.0'
- implementation "androidx.camera:camera-core:${CameraX_version}"
- implementation "androidx.camera:camera-camera2:${CameraX_version}"
- implementation "androidx.camera:camera-lifecycle:${CameraX_version}"
- implementation 'androidx.camera:camera-view:1.2.0-alpha02'
+ def camerax_version = '1.2.3'
+ implementation "androidx.camera:camera-core:$camerax_version"
+ // CameraX Camera2 extensions
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ // CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ // CameraX View class
+ implementation "androidx.camera:camera-view:$camerax_version"
//TCP
implementation 'io.netty:netty-all:4.1.23.Final'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a966f73..a809bf6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,8 +3,6 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.casic.br.operationsite">
-
-
@@ -14,12 +12,6 @@
-
-
-
-
@@ -28,6 +20,18 @@
+
+
+
+
+
+
+
+
+
+
{
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.completedRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ completedRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.completedRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ completedRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071502)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.completedRefreshLayout.setOnRefreshListener {
+ completedRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.completedRefreshLayout.setOnLoadMoreListener {
+ completedRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,63 +123,57 @@
private val callback = Handler.Callback {
if (it.what == 2022071502) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- baseView.emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- baseView.emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.completedRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.completedRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ completedRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ completedRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
}
override fun onDestroyView() {
- broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
super.onDestroyView()
+ broadcastManager.destroy(LocaleConstant.SEARCH_ACTION)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
index 210808d..e927d86 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_not_start.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRecyclerView
+import kotlinx.android.synthetic.main.fragment_not_start.notStartRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class NotStartFragment : KotlinBaseFragment() {
@@ -54,27 +55,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.notStartRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ notStartRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.notStartRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ notStartRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071501)
}
}
@@ -94,7 +96,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -103,13 +104,13 @@
}
override fun initEvent() {
- baseView.notStartRefreshLayout.setOnRefreshListener {
+ notStartRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.notStartRefreshLayout.setOnLoadMoreListener {
+ notStartRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -122,56 +123,51 @@
private val callback = Handler.Callback {
if (it.what == 2022071501) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(
- R.id.connectionPhoneView,
- "联系电话:${item.workPersonPhoneNumber}"
- )
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.notStartRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.notStartRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView,
+ "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ notStartRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ notStartRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
index bdc28e4..dcb240c 100644
--- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
+++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt
@@ -26,8 +26,9 @@
import com.pengxh.kt.lite.utils.BroadcastManager
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.WeakReferenceHandler
-import kotlinx.android.synthetic.main.fragment_working.view.*
-import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.fragment_working.workingRecyclerView
+import kotlinx.android.synthetic.main.fragment_working.workingRefreshLayout
+import kotlinx.android.synthetic.main.include_empty_view.emptyView
class WorkingFragment : KotlinBaseFragment() {
@@ -55,27 +56,28 @@
workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java]
workSiteViewModel.worksiteModel.observe(this) {
if (it.code == 200) {
- val dataRows = it.data?.rows
+ val dataRows = it.data?.rows!!
when {
isRefresh -> {
- dataBeans.clear()
- dataBeans = dataRows!!
- baseView.workingRefreshLayout.finishRefresh()
+ workingListAdapter.setRefreshData(dataRows)
+ workingRefreshLayout.finishRefresh()
isRefresh = false
}
+
isLoadMore -> {
- if (dataRows?.size == 0) {
+ if (dataRows.size == 0) {
"到底了,别拉了".show(requireContext())
}
- dataBeans.addAll(dataRows!!)
- baseView.workingRefreshLayout.finishLoadMore()
+ workingListAdapter.setLoadMoreData(dataRows)
+ workingRefreshLayout.finishLoadMore()
isLoadMore = false
}
+
else -> {
- dataBeans = dataRows!!
+ dataBeans = dataRows
+ weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
- weakReferenceHandler.sendEmptyMessage(2022071101)
}
}
@@ -95,7 +97,6 @@
override fun onResume() {
super.onResume()
- pageIndex = 1
obtainProjectListByPage()
}
@@ -104,13 +105,13 @@
}
override fun initEvent() {
- baseView.workingRefreshLayout.setOnRefreshListener {
+ workingRefreshLayout.setOnRefreshListener {
isRefresh = true
//刷新之后页码重置
pageIndex = 1
obtainProjectListByPage()
}
- baseView.workingRefreshLayout.setOnLoadMoreListener {
+ workingRefreshLayout.setOnLoadMoreListener {
isLoadMore = true
pageIndex++
obtainProjectListByPage()
@@ -123,53 +124,50 @@
private val callback = Handler.Callback {
if (it.what == 2022071101) {
- if (isRefresh || isLoadMore) {
- workingListAdapter.notifyDataSetChanged()
- } else { //首次加载数据
- if (dataBeans.size == 0) {
- emptyView.showEmptyPage {
- pageIndex = 1
- obtainProjectListByPage()
- }
- } else {
- emptyView.hide()
- workingListAdapter = object :
- NormalRecyclerAdapter(
- R.layout.item_working_rv, dataBeans
- ) {
- override fun convertView(
- viewHolder: ViewHolder,
- position: Int,
- item: WorkSiteListModel.DataModel.RowsModel
- ) {
- if (item.imageUrl.isNullOrBlank()) {
- viewHolder.setImageResource(
- R.id.workSiteImageView, R.mipmap.ic_launcher
- )
- } else {
- viewHolder.setImageResource(
- R.id.workSiteImageView, item.imageUrl.combineImagePath()
- )
- }
- viewHolder.setText(R.id.workTitleView, item.workTitle)
- .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
- .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}")
- .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
- }
- }
- baseView.workingRecyclerView.addItemDecoration(
- ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
- )
- baseView.workingRecyclerView.adapter = workingListAdapter
- workingListAdapter.setOnItemClickedListener(object :
- NormalRecyclerAdapter.OnItemClickedListener {
- override fun onItemClicked(
- position: Int, t: WorkSiteListModel.DataModel.RowsModel
- ) {
- requireContext().navigatePageTo(t.id)
- }
- })
+ if (dataBeans.size == 0) {
+ emptyView.showEmptyPage {
+ pageIndex = 1
+ obtainProjectListByPage()
}
+ } else {
+ emptyView.hide()
+ workingListAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_working_rv, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder, position: Int,
+ item: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ if (item.imageUrl.isNullOrBlank()) {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, R.mipmap.ic_launcher
+ )
+ } else {
+ viewHolder.setImageResource(
+ R.id.workSiteImageView, item.imageUrl.combineImagePath()
+ )
+ }
+ viewHolder.setText(R.id.workTitleView, item.workTitle)
+ .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}")
+ .setText(
+ R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}"
+ )
+ .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}")
+ }
+ }
+ workingRecyclerView.addItemDecoration(
+ ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f)
+ )
+ workingRecyclerView.adapter = workingListAdapter
+ workingListAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: WorkSiteListModel.DataModel.RowsModel
+ ) {
+ requireContext().navigatePageTo(t.id)
+ }
+ })
}
}
true
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index ace8e16..3700a3d 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -7,6 +7,7 @@
val USER_PERMISSIONS = arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
diff --git a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
index 080b5d8..2af6cf4 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/HikVisionActivity.kt
@@ -33,8 +33,16 @@
import com.pengxh.kt.lite.extensions.getSystemService
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_hikvision.*
-import kotlinx.android.synthetic.main.include_option_title.*
+import kotlinx.android.synthetic.main.activity_hikvision.configButton
+import kotlinx.android.synthetic.main.activity_hikvision.configSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.netSelectView
+import kotlinx.android.synthetic.main.activity_hikvision.regionView
+import kotlinx.android.synthetic.main.activity_hikvision.rootView
+import kotlinx.android.synthetic.main.activity_hikvision.steeringWheelView
+import kotlinx.android.synthetic.main.activity_hikvision.videoSurfaceView
+import kotlinx.android.synthetic.main.include_option_title.leftBackView
+import kotlinx.android.synthetic.main.include_option_title.rightOptionView
+import kotlinx.android.synthetic.main.include_option_title.titleView
class HikVisionActivity : KotlinBaseActivity(), SurfaceHolder.Callback {
@@ -348,8 +356,8 @@
}
override fun onDestroy() {
+ super.onDestroy()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
index 1066448..1b53f7e 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/MethaneActivity.kt
@@ -12,7 +12,12 @@
import android.os.Message
import androidx.lifecycle.ViewModelProvider
import com.casic.br.operationsite.R
-import com.casic.br.operationsite.extensions.*
+import com.casic.br.operationsite.extensions.createCloseLightCommand
+import com.casic.br.operationsite.extensions.createOpenLightCommand
+import com.casic.br.operationsite.extensions.createStartCommand
+import com.casic.br.operationsite.extensions.createStopCommand
+import com.casic.br.operationsite.extensions.initLayoutImmersionBar
+import com.casic.br.operationsite.extensions.splitGasParam
import com.casic.br.operationsite.utils.DeviceType
import com.casic.br.operationsite.utils.LocaleConstant
import com.casic.br.operationsite.utils.RuntimeCache
@@ -28,8 +33,18 @@
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
-import kotlinx.android.synthetic.main.activity_methane.*
-import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.android.synthetic.main.activity_methane.addressView
+import kotlinx.android.synthetic.main.activity_methane.configButton
+import kotlinx.android.synthetic.main.activity_methane.configSelectView
+import kotlinx.android.synthetic.main.activity_methane.connectButton
+import kotlinx.android.synthetic.main.activity_methane.netSelectView
+import kotlinx.android.synthetic.main.activity_methane.rootView
+import kotlinx.android.synthetic.main.activity_methane.steeringWheelView
+import kotlinx.android.synthetic.main.activity_methane.tcpStateView
+import kotlinx.android.synthetic.main.activity_methane.thresholdView
+import kotlinx.android.synthetic.main.activity_methane.warningSwitch
+import kotlinx.android.synthetic.main.include_base_title.leftBackView
+import kotlinx.android.synthetic.main.include_base_title.titleView
class MethaneActivity : KotlinBaseActivity(), Handler.Callback {
@@ -266,9 +281,9 @@
}
override fun onDestroy() {
+ super.onDestroy()
SocketManager.get.close()
connectivityManager?.bindProcessToNetwork(null)
connectivityManager?.unregisterNetworkCallback(networkCallback)
- super.onDestroy()
}
}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 7408bb3..07b29b5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.6.4'
+ classpath 'com.android.tools.build:gradle:4.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
@@ -23,6 +23,6 @@
}
}
-task clean(type: Delete) {
+tasks.register('clean', Delete) {
delete rootProject.buildDir
}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index d952a71..2fb06da 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Fri Jul 08 18:11:47 CST 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME