diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index efede87..290daee 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -31,8 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "点位详情" leftBackView.visibility = View.VISIBLE diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index efede87..290daee 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -31,8 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "点位详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index dceb2e3..083a8da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -2,11 +2,12 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellListAdapter -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.RouteOnMap @@ -14,6 +15,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -31,7 +34,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellListAdapter: WellListAdapter + private lateinit var wellListAdapter: NormalRecyclerAdapter private val context: Context = this@WellManagementActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -45,8 +48,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_management override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -142,47 +145,73 @@ private val callback = Handler.Callback { if (it.what == 2022032501) { - if (isRefresh || isLoadMore) { - wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellListAdapter = WellListAdapter(this, dataBeans) - wellListView!!.adapter = wellListAdapter - wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellListAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_list_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + wellListView.adapter = wellListAdapter + wellListAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index efede87..290daee 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -31,8 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "点位详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index dceb2e3..083a8da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -2,11 +2,12 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellListAdapter -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.RouteOnMap @@ -14,6 +15,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -31,7 +34,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellListAdapter: WellListAdapter + private lateinit var wellListAdapter: NormalRecyclerAdapter private val context: Context = this@WellManagementActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -45,8 +48,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_management override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -142,47 +145,73 @@ private val callback = Handler.Callback { if (it.what == 2022032501) { - if (isRefresh || isLoadMore) { - wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellListAdapter = WellListAdapter(this, dataBeans) - wellListView!!.adapter = wellListAdapter - wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellListAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_list_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + wellListView.adapter = wellListAdapter + wellListAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 55777a3..5c78e0a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -24,8 +24,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_monitor override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "监控内容" leftBackView.visibility = View.VISIBLE @@ -39,12 +39,12 @@ wellViewModel.monitorModel.observe(this) { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { + emptyView.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { wellViewModel.obtainMonitorResult(wellId) } } else { - emptyView!!.hide() - sensorListView!!.adapter = SensorListAdapter(this, it.data!!) + emptyView.hide() + sensorListView.adapter = SensorListAdapter(this, it.data!!) } } } diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index efede87..290daee 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -31,8 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "点位详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index dceb2e3..083a8da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -2,11 +2,12 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellListAdapter -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.RouteOnMap @@ -14,6 +15,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -31,7 +34,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellListAdapter: WellListAdapter + private lateinit var wellListAdapter: NormalRecyclerAdapter private val context: Context = this@WellManagementActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -45,8 +48,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_management override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -142,47 +145,73 @@ private val callback = Handler.Callback { if (it.what == 2022032501) { - if (isRefresh || isLoadMore) { - wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellListAdapter = WellListAdapter(this, dataBeans) - wellListView!!.adapter = wellListAdapter - wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellListAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_list_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + wellListView.adapter = wellListAdapter + wellListAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 55777a3..5c78e0a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -24,8 +24,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_monitor override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "监控内容" leftBackView.visibility = View.VISIBLE @@ -39,12 +39,12 @@ wellViewModel.monitorModel.observe(this) { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { + emptyView.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { wellViewModel.obtainMonitorResult(wellId) } } else { - emptyView!!.hide() - sensorListView!!.adapter = SensorListAdapter(this, it.data!!) + emptyView.hide() + sensorListView.adapter = SensorListAdapter(this, it.data!!) } } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 51ab27e..34b02ce 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -2,10 +2,10 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel @@ -16,6 +16,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -34,7 +36,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellOperationAdapter: WellOperationAdapter + private lateinit var wellOperationAdapter: NormalRecyclerAdapter private val context: Context = this@WellOperationActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -49,8 +51,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_operation override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -180,85 +182,114 @@ private val callback = Handler.Callback { if (it.what == 2022032801) { - if (isRefresh || isLoadMore) { - wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellOperationAdapter = WellOperationAdapter(this, dataBeans) - operationListView!!.adapter = wellOperationAdapter - wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, bfzt) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellOperationAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_operation_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + val bfzt = if (item.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (item.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, bfzt + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + operationListView.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/build.gradle b/app/build.gradle index 307176f..dff84cf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -81,8 +81,8 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //基础依赖库 - implementation files('libs/lite-release.aar') - implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' + implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Google官方授权框架 @@ -127,8 +127,8 @@ //图片压缩 implementation 'top.zibin:Luban:1.1.8' //推送SDK - implementation 'com.getui:gtsdk:3.2.10.0' //个推SDK - implementation 'com.getui:gtc:3.1.9.0' //个推核心组件 + implementation 'com.getui:gtsdk:3.2.15.0' //个推SDK + implementation 'com.getui:gtc:3.2.1.0' //个推核心组件 //数据库框架 implementation 'org.greenrobot:greendao:3.3.0' //数据库升级 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar deleted file mode 100644 index 9f8c814..0000000 --- a/app/libs/lite-release.aar +++ /dev/null Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt deleted file mode 100644 index df7246f..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/DeployedAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class DeployedAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index efede87..290daee 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -31,8 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "点位详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index dceb2e3..083a8da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -2,11 +2,12 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellListAdapter -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.RouteOnMap @@ -14,6 +15,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -31,7 +34,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellListAdapter: WellListAdapter + private lateinit var wellListAdapter: NormalRecyclerAdapter private val context: Context = this@WellManagementActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -45,8 +48,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_management override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -142,47 +145,73 @@ private val callback = Handler.Callback { if (it.what == 2022032501) { - if (isRefresh || isLoadMore) { - wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellListAdapter = WellListAdapter(this, dataBeans) - wellListView!!.adapter = wellListAdapter - wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellListAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_list_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + wellListView.adapter = wellListAdapter + wellListAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 55777a3..5c78e0a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -24,8 +24,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_monitor override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "监控内容" leftBackView.visibility = View.VISIBLE @@ -39,12 +39,12 @@ wellViewModel.monitorModel.observe(this) { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { + emptyView.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { wellViewModel.obtainMonitorResult(wellId) } } else { - emptyView!!.hide() - sensorListView!!.adapter = SensorListAdapter(this, it.data!!) + emptyView.hide() + sensorListView.adapter = SensorListAdapter(this, it.data!!) } } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 51ab27e..34b02ce 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -2,10 +2,10 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel @@ -16,6 +16,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -34,7 +36,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellOperationAdapter: WellOperationAdapter + private lateinit var wellOperationAdapter: NormalRecyclerAdapter private val context: Context = this@WellOperationActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -49,8 +51,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_operation override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -180,85 +182,114 @@ private val callback = Handler.Callback { if (it.what == 2022032801) { - if (isRefresh || isLoadMore) { - wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellOperationAdapter = WellOperationAdapter(this, dataBeans) - operationListView!!.adapter = wellOperationAdapter - wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, bfzt) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellOperationAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_operation_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + val bfzt = if (item.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (item.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, bfzt + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + operationListView.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/res/layout/activity_deployed_well.xml b/app/src/main/res/layout/activity_deployed_well.xml index 0f1d4b8..1754ffc 100644 --- a/app/src/main/res/layout/activity_deployed_well.xml +++ b/app/src/main/res/layout/activity_deployed_well.xml @@ -13,8 +13,7 @@ + android:layout_height="match_parent"> -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_deployed_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt index 2a40a5f..45c4d2f 100644 --- a/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt +++ b/app/src/main/java/com/casic/app/smartwell/adapter/ExpandableViewAdapter.kt @@ -1,6 +1,5 @@ package com.casic.app.smartwell.adapter -import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View @@ -11,22 +10,22 @@ import com.casic.app.smartwell.model.ExpandableDataModel import com.pengxh.kt.lite.extensions.convertColor -@SuppressLint("NotifyDataSetChanged") class ExpandableViewAdapter(private val context: Context) : RecyclerView.Adapter() { - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + private val layoutInflater by lazy { LayoutInflater.from(context) } private var dataRows: MutableList = ArrayList() fun setExpandableData(dataSet: MutableList) { this.dataRows = dataSet - notifyDataSetChanged() + notifyItemRangeChanged(0, dataSet.size) } fun clearAll() { - if (dataRows.size != 0) { + val size = dataRows.size + if (size != 0) { dataRows.clear() - notifyDataSetChanged() + notifyItemRangeRemoved(0, size) } } diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt deleted file mode 100644 index 48c23b5..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/HomeRecycleAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.utils.LocaleConstant - -class HomeRecycleAdapter(context: Context) : - RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_home_page_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.imageView.setImageResource(LocaleConstant.HOME_ICONS[position]) - holder.textView.text = LocaleConstant.HOME_ITEMS[position] - holder.itemView.setOnClickListener { - clickListener?.onClick(position) - } - } - - override fun getItemCount(): Int = LocaleConstant.HOME_ITEMS.size - - private var clickListener: OnGridItemClickListener? = null - - interface OnGridItemClickListener { - fun onClick(position: Int) - } - - fun setOnGridItemClickListener(onGridItemClickListener: OnGridItemClickListener?) { - clickListener = onGridItemClickListener - } - - class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val imageView: ImageView = itemView.findViewById(R.id.imageView) - val textView: TextView = itemView.findViewById(R.id.textView) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt deleted file mode 100644 index 3bc39f6..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/NoticeDataAdapter.kt +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.NoticeLocaleBean - -class NoticeDataAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun getItemCount(): Int = dataRows.size - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_notice_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.dateView.text = rowsBean.noticeTime - holder.titleView.text = rowsBean.title - holder.contentView.text = rowsBean.content - val state = if (rowsBean.isRead == "0") { - View.VISIBLE - } else { - View.INVISIBLE - } - holder.readStateView.visibility = state - //绑定事件 - holder.deleteView.setOnClickListener { - listener?.onDeleteClicked(position) - } - - holder.showDetailLayout.setOnClickListener { - listener?.onShowMoreClicked(position) - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var dateView: TextView = view.findViewById(R.id.dateView) - var titleView: TextView = view.findViewById(R.id.titleView) - var contentView: TextView = view.findViewById(R.id.contentView) - var readStateView: TextView = view.findViewById(R.id.readStateView) - - var showDetailLayout: LinearLayout = view.findViewById(R.id.showDetailLayout) - var deleteView: ImageView = view.findViewById(R.id.deleteView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onDeleteClicked(position: Int) - - fun onShowMoreClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt deleted file mode 100644 index 5a58c1d..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/UnDeployAdapter.kt +++ /dev/null @@ -1,75 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class UnDeployAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_undeploy_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt deleted file mode 100644 index ab72c5e..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellListAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellListAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_list_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onItemButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onItemButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt b/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt deleted file mode 100644 index a2a94d0..0000000 --- a/app/src/main/java/com/casic/app/smartwell/adapter/WellOperationAdapter.kt +++ /dev/null @@ -1,84 +0,0 @@ -package com.casic.app.smartwell.adapter - -import android.content.Context -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView -import com.casic.app.smartwell.R -import com.casic.app.smartwell.model.WellListModel -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton - -class WellOperationAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_well_operation_rv, parent, false) - ) - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.wellStateView.text = String.format("已${rowsBean.bfztName}") - if (rowsBean.bfztName == "布防") { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_green_radius_5) - holder.operationButton.text = "撤防" - } else { - holder.wellStateView.setBackgroundResource(R.drawable.bg_solid_text_red_radius_5) - holder.operationButton.text = "布防" - } - holder.wellNameView.text = rowsBean.wellName - val deep = if (rowsBean.deep.toString().isBlank()) { - "未知" - } else { - rowsBean.deep.toString() + "m" - } - holder.wellDepthView.text = String.format("深:${deep}") - holder.wellCodeView.text = String.format("点位编号:${rowsBean.wellCode}") - holder.wellTypeView.text = String.format("点位类型:${rowsBean.wellTypeName}") - holder.ownerShipView.text = String.format("权属单位:${rowsBean.deptName}") - holder.wellLocationView.text = String.format("点位置:${rowsBean.position}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClicked(position) - } - holder.operationButton.setOnClickListener { - listener?.onOperationClicked(position) - } - holder.navigationButton.setOnClickListener { - listener?.onNavigationButtonClicked(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var wellStateView: TextView = view.findViewById(R.id.wellStateView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) - var wellDepthView: TextView = view.findViewById(R.id.wellDepthView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var wellTypeView: TextView = view.findViewById(R.id.wellTypeView) - var ownerShipView: TextView = view.findViewById(R.id.ownerShipView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton) - var navigationButton: QMUIRoundButton = view.findViewById(R.id.navigationButton) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - - fun onOperationClicked(position: Int) - - fun onNavigationButtonClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt new file mode 100644 index 0000000..59df203 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Poi.kt @@ -0,0 +1,29 @@ +package com.pengxh.kt.lite.extensions + +import android.content.Context +import com.amap.api.maps.model.Poi +import com.amap.api.navi.AmapNaviPage +import com.amap.api.navi.AmapNaviParams +import com.amap.api.navi.AmapNaviType +import com.amap.api.navi.AmapPageType + +/** + * 导航扩展函数 + * */ +fun Poi.showRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.WALK, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} + +fun Poi.showBusRouteOnMap(context: Context) { + val params = AmapNaviParams( + null, null, this, + AmapNaviType.DRIVER, + AmapPageType.ROUTE + ) + AmapNaviPage.getInstance().showRouteActivity(context, params, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index 335ecea..8fa4e02 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -15,7 +15,6 @@ import com.amap.api.maps.CoordinateConverter import com.amap.api.maps.model.* import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.LoadingDialogHub @@ -25,6 +24,8 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow @@ -168,11 +169,19 @@ } //首页功能块 - val homeRecycleAdapter = HomeRecycleAdapter(requireContext()) + val homeRecycleAdapter = object : NormalRecyclerAdapter( + R.layout.item_home_page_rv, LocaleConstant.HOME_ITEMS.toList() + ) { + override fun convertView(viewHolder: ViewHolder, position: Int, item: String) { + viewHolder + .setImageResource(R.id.imageView, LocaleConstant.HOME_ICONS[position]) + .setText(R.id.textView, item) + } + } homeView.homeRecyclerView.adapter = homeRecycleAdapter - homeRecycleAdapter.setOnGridItemClickListener(object : - HomeRecycleAdapter.OnGridItemClickListener { - override fun onClick(position: Int) { + homeRecycleAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: String) { when (position) { 0 -> requireContext().navigatePageTo() 1 -> requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index 0f58a8d..90192e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -2,8 +2,8 @@ import android.os.CountDownTimer import android.os.Handler +import android.view.View import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.NoticeDataAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.NoticeLocaleBean import com.casic.app.smartwell.model.UserDetailModel @@ -13,6 +13,8 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.message.GTNotificationMessage +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show @@ -26,9 +28,8 @@ class NoticePageFragment : KotlinBaseFragment() { - private val kTag = "NoticePageFragment" private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var noticeDataAdapter: NoticeDataAdapter + private lateinit var noticeDataAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -106,63 +107,71 @@ private val callback = Handler.Callback { if (it.what == 2022070401) { - if (isRefresh || isLoadMore) { - noticeDataAdapter.notifyDataSetChanged() + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } else { - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) - } - } else { - emptyView!!.hide() - noticeDataAdapter = NoticeDataAdapter(requireContext(), dataBeans) - noticeRecyclerView!!.adapter = noticeDataAdapter - noticeDataAdapter.setOnItemClickListener(object : - NoticeDataAdapter.OnItemClickListener { - override fun onDeleteClicked(position: Int) { - val dataBean = dataBeans[position] - DataBaseManager.instance.deleteNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - dataBeans.removeAt(position) - noticeDataAdapter.notifyItemRemoved(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有任何报警通知") { - pageIndex = 0 - dataBeans = DataBaseManager.instance.queryNoticeByPage(userId, pageIndex) - weakReferenceHandler.sendEmptyMessage(2022070401) + emptyView.hide() + noticeDataAdapter = object : + NormalRecyclerAdapter(R.layout.item_notice_rv, dataBeans) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: NoticeLocaleBean + ) { + val state = if (item.isRead == "0") { + View.VISIBLE + } else { + View.INVISIBLE + } + viewHolder.setText(R.id.dateView, item.noticeTime) + .setText(R.id.titleView, item.title) + .setText(R.id.contentView, item.content) + .setVisibility(R.id.readStateView, state) + .setOnClickListener(R.id.deleteView) { + DataBaseManager.instance.deleteNoticeByMessageId( + item.userId, item.messageId + ) + dataBeans.removeAt(position) + noticeDataAdapter.notifyItemRemoved(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + if (dataBeans.size == 0) { + emptyView.showEmptyPage("没有任何报警通知") { + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryNoticeByPage( + userId, pageIndex + ) + weakReferenceHandler.sendEmptyMessage(2022070401) + } } } - } - - override fun onShowMoreClicked(position: Int) { - val dataBean = dataBeans[position] - - if (dataBean.jobId.isBlank()) { - "工单ID为空,无法查看工单".show(requireContext()) - return - } - requireContext().navigatePageTo( - dataBean.jobId - ) - //更改数据库里通知状态 - DataBaseManager.instance.updateNoticeByMessageId( - dataBean.userId, - dataBean.messageId - ) - noticeDataAdapter.notifyItemChanged(position) - noticeDataAdapter.notifyItemRangeChanged( - position, dataBeans.size - position - ) - } - }) + .setOnClickListener(R.id.showDetailLayout, + object : View.OnClickListener { + override fun onClick(v: View?) { + if (item.jobId.isBlank()) { + "工单ID为空,无法查看工单".show(requireContext()) + return + } + requireContext().navigatePageTo( + item.jobId + ) + //更改数据库里通知状态 + DataBaseManager.instance.updateNoticeByMessageId( + item.userId, item.messageId + ) + noticeDataAdapter.notifyItemChanged(position) + noticeDataAdapter.notifyItemRangeChanged( + position, dataBeans.size - position + ) + } + }) + } } + noticeRecyclerView.adapter = noticeDataAdapter } } true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index 6804e83..f960fa8 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -113,14 +113,14 @@ completedAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您还没有处理完成过任何工单") { + emptyView.showEmptyPage("您还没有处理完成过任何工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() completedAdapter = OrderCompletedAdapter(requireContext(), dataBeans) - completedOrderView!!.adapter = completedAdapter + completedOrderView.adapter = completedAdapter completedAdapter.setOnItemClickListener(object : OrderCompletedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index c80cdfa..17d1c96 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -113,14 +113,14 @@ inHandleAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() inHandleAdapter = OrderInHandleAdapter(requireContext(), dataBeans) - inHandleView!!.adapter = inHandleAdapter + inHandleView.adapter = inHandleAdapter inHandleAdapter.setOnItemClickListener(object : OrderInHandleAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index 4c4aebd..5ed6ce5 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -95,14 +95,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您确认的工单") { + emptyView.showEmptyPage("没有需要您确认的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 1e89564..9045af9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -118,14 +118,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("没有需要您处理的工单") { + emptyView.showEmptyPage("没有需要您处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 2f0da97..388b1e3 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -121,14 +121,14 @@ notProcessedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("您没有超时未处理的工单") { + emptyView.showEmptyPage("您没有超时未处理的工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notProcessedAdapter = OrderNotProcessedAdapter(requireContext(), dataBeans) - notProcessedView!!.adapter = notProcessedAdapter + notProcessedView.adapter = notProcessedAdapter notProcessedAdapter.setOnItemClickListener(object : OrderNotProcessedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index 95e85bf..0b088f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -99,14 +99,14 @@ notConfirmedAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("真不错,您已经处理完所有工单") { + emptyView.showEmptyPage("真不错,您已经处理完所有工单") { pageIndex = 1 obtainWorkOrderList() } } else { - emptyView!!.hide() + emptyView.hide() notConfirmedAdapter = OrderNotConfirmedAdapter(requireContext(), dataBeans) - notConfirmedView!!.adapter = notConfirmedAdapter + notConfirmedView.adapter = notConfirmedAdapter notConfirmedAdapter.setOnItemClickListener(object : OrderNotConfirmedAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 2e2848c..1b74ce9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -14,8 +14,8 @@ override fun initLayoutView(): Int = R.layout.activity_about_us override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "关于我们" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 517b04d..bf19eb2 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -4,7 +4,9 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.isLetterAndDigit -import com.casic.app.smartwell.utils.* +import com.casic.app.smartwell.utils.AuthenticationHelper +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.utils.RSAUtils import com.casic.app.smartwell.vm.UserViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -25,8 +27,8 @@ override fun initLayoutView(): Int = R.layout.activity_change_pwd override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "修改密码" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt index 7964b53..5e48dab 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/DeployedWellActivity.kt @@ -6,15 +6,18 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.DeployedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.VerticalMarginItemDecoration import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil @@ -30,7 +33,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var deployAdapter: DeployedAdapter + private lateinit var deployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -79,6 +82,11 @@ ) } } + + //添加分割线 + deployedListView.addItemDecoration( + VerticalMarginItemDecoration(5f.dp2px(context), 0) + ) } override fun initEvent() { @@ -104,8 +112,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "布防列表" leftBackView.visibility = View.VISIBLE @@ -123,74 +131,94 @@ private val callback = Handler.Callback { if (it.what == 2023030102) { - if (isRefresh || isLoadMore) { - deployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - deployAdapter = DeployedAdapter(this, dataBeans) - deployedListView!!.adapter = deployAdapter - deployAdapter.setOnItemClickListener(object : - DeployedAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位撤防吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, "0") - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + deployAdapter = object : NormalRecyclerAdapter( + R.layout.item_deployed_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val detailModel = dataBeans[position] + val wellId = detailModel.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位撤防吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, "0" + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + }) + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val wellDetail = dataBeans[position] + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + }) + } + } + deployedListView.adapter = deployAdapter + deployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index e531d6c..cc4d4fd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -15,8 +15,8 @@ override fun initLayoutView(): Int = R.layout.activity_help_center override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "帮助中心" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index 920e610..347b952 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -45,8 +45,8 @@ override fun initLayoutView(): Int = R.layout.activity_main override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index d45c619..2124cca 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -4,7 +4,8 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar @@ -29,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_completed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 3e09024..e60bb49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -63,8 +63,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_in_handle_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 2438c44..07195f5 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -11,9 +11,16 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.callback.OnImageCompressListener -import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.* -import com.casic.app.smartwell.vm.* +import com.casic.app.smartwell.extensions.combineImagePath +import com.casic.app.smartwell.extensions.compressImage +import com.casic.app.smartwell.extensions.reformat +import com.casic.app.smartwell.extensions.toChinese +import com.casic.app.smartwell.utils.GlideLoadEngine +import com.casic.app.smartwell.utils.LoadingDialogHub +import com.casic.app.smartwell.vm.OperationViewModel +import com.casic.app.smartwell.vm.UploadImageViewModel +import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.SingleChoiceDialog import com.casic.app.smartwell.widgets.TimeLineBottomSheet import com.gyf.immersionbar.ImmersionBar @@ -34,7 +41,6 @@ import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_order_not_confirmed_detail.* -import kotlinx.android.synthetic.main.activity_well_management.* import kotlinx.android.synthetic.main.include_base_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* import java.io.File @@ -56,8 +62,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_confirmed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index 31593b3..774cf69 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -35,8 +35,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 0c35edc..a2e7b75 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -13,7 +13,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_order_overtime.* import kotlinx.android.synthetic.main.include_base_title.* -import java.util.* class OvertimeOrderActivity : KotlinBaseActivity() { @@ -27,8 +26,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_overtime override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "超时工单" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 24fd4a2..910aae8 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -47,8 +47,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "工单查询" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index e85a453..40c13e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -44,8 +44,8 @@ override fun initLayoutView(): Int = R.layout.activity_order_search_result override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "查询结果" leftBackView.visibility = View.VISIBLE @@ -160,14 +160,14 @@ searchResultAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainSearchResult() } } else { - emptyView!!.hide() + emptyView.hide() searchResultAdapter = SearchResultAdapter(this, dataBeans) - resultRecyclerView!!.adapter = searchResultAdapter + resultRecyclerView.adapter = searchResultAdapter searchResultAdapter.setOnItemClickListener(object : SearchResultAdapter.OnItemClickListener { override fun onClicked(position: Int) { diff --git a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt index f3cf72a..36c924c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UnDeployWellActivity.kt @@ -6,13 +6,14 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.UnDeployAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -29,7 +30,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var wellViewModel: WellViewModel private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var unDeployAdapter: UnDeployAdapter + private lateinit var unDeployAdapter: NormalRecyclerAdapter private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false @@ -103,8 +104,8 @@ } override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "撤防列表" leftBackView.visibility = View.VISIBLE @@ -122,58 +123,74 @@ private val callback = Handler.Callback { if (it.what == 2023030101) { - if (isRefresh || isLoadMore) { - unDeployAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - unDeployAdapter = UnDeployAdapter(this, dataBeans) - undeployListView!!.adapter = unDeployAdapter - unDeployAdapter.setOnItemClickListener(object : - UnDeployAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - wellViewModel.obtainOperationResult(wellId, "1") - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + unDeployAdapter = object : NormalRecyclerAdapter( + R.layout.item_undeploy_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + wellViewModel.obtainOperationResult(wellId, "1") + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + undeployListView.adapter = unDeployAdapter + unDeployAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index 5eb088d..3745111 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -30,8 +30,8 @@ override fun initLayoutView(): Int = R.layout.activity_user_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "个人资料" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index efede87..290daee 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -31,8 +31,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "点位详情" leftBackView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index dceb2e3..083a8da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -2,11 +2,12 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellListAdapter -import com.casic.app.smartwell.extensions.* +import com.casic.app.smartwell.extensions.showEmptyPage +import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.RouteOnMap @@ -14,6 +15,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -31,7 +34,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellListAdapter: WellListAdapter + private lateinit var wellListAdapter: NormalRecyclerAdapter private val context: Context = this@WellManagementActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -45,8 +48,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_management override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -142,47 +145,73 @@ private val callback = Handler.Callback { if (it.what == 2022032501) { - if (isRefresh || isLoadMore) { - wellListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellListAdapter = WellListAdapter(this, dataBeans) - wellListView!!.adapter = wellListAdapter - wellListAdapter.setOnItemClickListener(object : - WellListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onItemButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellListAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_list_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + wellListView.adapter = wellListAdapter + wellListAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index 55777a3..5c78e0a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -24,8 +24,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_monitor override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() titleView.text = "监控内容" leftBackView.visibility = View.VISIBLE @@ -39,12 +39,12 @@ wellViewModel.monitorModel.observe(this) { if (it.code == 200) { if (it.data?.size == 0) { - emptyView!!.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { + emptyView.showEmptyPage("抱歉,该点位下无设备,或设备已离线") { wellViewModel.obtainMonitorResult(wellId) } } else { - emptyView!!.hide() - sensorListView!!.adapter = SensorListAdapter(this, it.data!!) + emptyView.hide() + sensorListView.adapter = SensorListAdapter(this, it.data!!) } } } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 51ab27e..34b02ce 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -2,10 +2,10 @@ import android.content.Context import android.os.Handler +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R -import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.WellListModel @@ -16,6 +16,8 @@ import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo @@ -34,7 +36,7 @@ private lateinit var wellListViewModel: WellListViewModel private lateinit var easyPopupWindow: WellTypePopupWindow private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var wellOperationAdapter: WellOperationAdapter + private lateinit var wellOperationAdapter: NormalRecyclerAdapter private val context: Context = this@WellOperationActivity private var items: MutableList = ArrayList() private var wellTypeModel = WellTypeModel("", "") @@ -49,8 +51,8 @@ override fun initLayoutView(): Int = R.layout.activity_well_operation override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + ImmersionBar.with(this).statusBarDarkFont(false).init() } override fun initData() { @@ -180,85 +182,114 @@ private val callback = Handler.Callback { if (it.what == 2022032801) { - if (isRefresh || isLoadMore) { - wellOperationAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - keywords = "" - wellType = "" - pageIndex = 1 - obtainWellList() - } - } else { - emptyView!!.hide() - wellOperationAdapter = WellOperationAdapter(this, dataBeans) - operationListView!!.adapter = wellOperationAdapter - wellOperationAdapter.setOnItemClickListener(object : - WellOperationAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - navigatePageTo(wellId) - } - - override fun onOperationClicked(position: Int) { - //标记被点击的item位置 - clickedPosition = position - - val detailModel = dataBeans[position] - val wellId = detailModel.id.toString() - if (wellId.isBlank()) { - "点位编号异常,无法查看详情".show(context) - return - } - val bfzt = if (detailModel.bfztName == "布防") { - "0" - } else { - "1" - } - val tips = if (detailModel.bfztName == "布防") { - "撤防" - } else { - "布防" - } - AlertControlDialog.Builder() - .setContext(context) - .setTitle("操作提示") - .setMessage("确定将该点位${tips}吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - wellViewModel.obtainOperationResult(wellId, bfzt) - } - - override fun onCancelClick() { - - } - }).build().show() - } - - override fun onNavigationButtonClicked(position: Int) { - val wellDetail = dataBeans[position] - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() - if (lat.isBlank() || lng.isBlank()) { - "点位经纬度异常,无法开启导航".show(context) - return - } - RouteOnMap.startNavigation( - context, - wellDetail.position, - LatLng(lat.toDouble(), lng.toDouble()) - ) - } - }) + if (dataBeans.size == 0) { + emptyView.showEmptyPage { + keywords = "" + wellType = "" + pageIndex = 1 + obtainWellList() } + } else { + emptyView.hide() + wellOperationAdapter = object : + NormalRecyclerAdapter( + R.layout.item_well_operation_rv, dataBeans + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: WellListModel.DataBean.RowsBean + ) { + if (item.bfztName == "布防") { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_green_radius_5 + ).setText(R.id.wellStateView, "撤防") + } else { + viewHolder.setImageResource( + R.id.wellStateView, R.drawable.bg_solid_text_red_radius_5 + ).setText(R.id.wellStateView, "布防") + } + val deep = if (item.deep.toString().isBlank()) { + "未知" + } else { + item.deep.toString() + "m" + } + viewHolder.setText(R.id.wellNameView, item.wellName) + .setText(R.id.wellStateView, "已${item.bfztName}") + .setText(R.id.wellDepthView, "深:${deep}") + .setText(R.id.wellCodeView, "点位编号:${item.wellCode}") + .setText(R.id.wellTypeView, "点位类型:${item.wellTypeName}") + .setText(R.id.ownerShipView, "权属单位:${item.deptName}") + .setText(R.id.wellLocationView, "点位置:${item.position}") + .setOnClickListener( + R.id.operationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + //标记被点击的item位置 + clickedPosition = position + + val wellId = item.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + val bfzt = if (item.bfztName == "布防") { + "0" + } else { + "1" + } + val tips = if (item.bfztName == "布防") { + "撤防" + } else { + "布防" + } + AlertControlDialog.Builder() + .setContext(context) + .setTitle("操作提示") + .setMessage("确定将该点位${tips}吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + wellViewModel.obtainOperationResult( + wellId, bfzt + ) + } + + override fun onCancelClick() { + + } + }).build().show() + } + } + ).setOnClickListener( + R.id.navigationButton, object : View.OnClickListener { + override fun onClick(v: View?) { + val lat = item.latGaode.toString() + val lng = item.lngGaode.toString() + if (lat.isBlank() || lng.isBlank()) { + "点位经纬度异常,无法开启导航".show(context) + return + } + RouteOnMap.startNavigation( + context, item.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) + } + } + ) + } + } + operationListView.adapter = wellOperationAdapter + wellOperationAdapter.setOnItemClickedListener(object : + NormalRecyclerAdapter.OnItemClickedListener { + override fun onItemClicked(position: Int, t: WellListModel.DataBean.RowsBean) { + val wellId = t.id.toString() + if (wellId.isBlank()) { + "点位编号异常,无法查看详情".show(context) + return + } + navigatePageTo(wellId) + } + }) } } true diff --git a/app/src/main/res/layout/activity_deployed_well.xml b/app/src/main/res/layout/activity_deployed_well.xml index 0f1d4b8..1754ffc 100644 --- a/app/src/main/res/layout/activity_deployed_well.xml +++ b/app/src/main/res/layout/activity_deployed_well.xml @@ -13,8 +13,7 @@ + android:layout_height="match_parent">