diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 1ce5a4f..515cb14 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -22,6 +22,7 @@
val wellTypeAndCountModel = MutableLiveData()
val wellListPageModel = MutableLiveData()
val wellTypeModel = MutableLiveData()
+ val deviceDataModel = MutableLiveData()
fun obtainWellDetail(id: String) = launch({
loadState.value = LoadState.Loading
@@ -117,4 +118,18 @@
}, {
it.printStackTrace()
})
+
+ fun obtainDeviceDataByWell(id: String) = launch({
+ val response = RetrofitServiceManager.obtainDeviceDataByWell(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ deviceDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 1ce5a4f..515cb14 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -22,6 +22,7 @@
val wellTypeAndCountModel = MutableLiveData()
val wellListPageModel = MutableLiveData()
val wellTypeModel = MutableLiveData()
+ val deviceDataModel = MutableLiveData()
fun obtainWellDetail(id: String) = launch({
loadState.value = LoadState.Loading
@@ -117,4 +118,18 @@
}, {
it.printStackTrace()
})
+
+ fun obtainDeviceDataByWell(id: String) = launch({
+ val response = RetrofitServiceManager.obtainDeviceDataByWell(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ deviceDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray.xml b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
new file mode 100644
index 0000000..cce49f6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 1ce5a4f..515cb14 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -22,6 +22,7 @@
val wellTypeAndCountModel = MutableLiveData()
val wellListPageModel = MutableLiveData()
val wellTypeModel = MutableLiveData()
+ val deviceDataModel = MutableLiveData()
fun obtainWellDetail(id: String) = launch({
loadState.value = LoadState.Loading
@@ -117,4 +118,18 @@
}, {
it.printStackTrace()
})
+
+ fun obtainDeviceDataByWell(id: String) = launch({
+ val response = RetrofitServiceManager.obtainDeviceDataByWell(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ deviceDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray.xml b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
new file mode 100644
index 0000000..cce49f6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_monitor_data.xml b/app/src/main/res/drawable/ic_monitor_data.xml
new file mode 100644
index 0000000..9e6b820
--- /dev/null
+++ b/app/src/main/res/drawable/ic_monitor_data.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 1ce5a4f..515cb14 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -22,6 +22,7 @@
val wellTypeAndCountModel = MutableLiveData()
val wellListPageModel = MutableLiveData()
val wellTypeModel = MutableLiveData()
+ val deviceDataModel = MutableLiveData()
fun obtainWellDetail(id: String) = launch({
loadState.value = LoadState.Loading
@@ -117,4 +118,18 @@
}, {
it.printStackTrace()
})
+
+ fun obtainDeviceDataByWell(id: String) = launch({
+ val response = RetrofitServiceManager.obtainDeviceDataByWell(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ deviceDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray.xml b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
new file mode 100644
index 0000000..cce49f6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_monitor_data.xml b/app/src/main/res/drawable/ic_monitor_data.xml
new file mode 100644
index 0000000..9e6b820
--- /dev/null
+++ b/app/src/main/res/drawable/ic_monitor_data.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
new file mode 100644
index 0000000..1230146
--- /dev/null
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f601e1..4d7c573 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,10 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 1ce5a4f..515cb14 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -22,6 +22,7 @@
val wellTypeAndCountModel = MutableLiveData()
val wellListPageModel = MutableLiveData()
val wellTypeModel = MutableLiveData()
+ val deviceDataModel = MutableLiveData()
fun obtainWellDetail(id: String) = launch({
loadState.value = LoadState.Loading
@@ -117,4 +118,18 @@
}, {
it.printStackTrace()
})
+
+ fun obtainDeviceDataByWell(id: String) = launch({
+ val response = RetrofitServiceManager.obtainDeviceDataByWell(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ deviceDataModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_stroke_layout_gray.xml b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
new file mode 100644
index 0000000..cce49f6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_stroke_layout_gray.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_monitor_data.xml b/app/src/main/res/drawable/ic_monitor_data.xml
new file mode 100644
index 0000000..9e6b820
--- /dev/null
+++ b/app/src/main/res/drawable/ic_monitor_data.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_big_image.xml b/app/src/main/res/layout/activity_big_image.xml
new file mode 100644
index 0000000..1230146
--- /dev/null
+++ b/app/src/main/res/layout/activity_big_image.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_well_detail.xml b/app/src/main/res/layout/activity_well_detail.xml
index f719734..62bb825 100644
--- a/app/src/main/res/layout/activity_well_detail.xml
+++ b/app/src/main/res/layout/activity_well_detail.xml
@@ -20,7 +20,7 @@
+ android:text="井名称" />
+ android:text="井类型" />
+ android:text="井编号" />
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataChildAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_child_device_data, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBean.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定子视图数据
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.deviceDataView.text = dataBean[position]
+ if (position == dataBean.size - 1) {
+ holder.deviceDataView.setTextColor(R.color.mainThemeColor.convertColor(context))
+ } else {
+ holder.deviceDataView.setTextColor(R.color.subTextColor.convertColor(context))
+ }
+ //绑定事件
+ holder.deviceDataView.setOnClickListener {
+ if (listener != null && position == dataBean.size - 1) {
+ listener!!.onOperationClicked()
+ }
+ }
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var deviceDataView: TextView = view.findViewById(R.id.deviceDataView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onOperationClicked()
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
new file mode 100644
index 0000000..c9fba19
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataListAdapter.kt
@@ -0,0 +1,67 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.model.DeviceDataModel
+
+class DeviceDataListAdapter(
+ private val context: Context, private val dataBeans: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_recycleview, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = dataBeans.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val dataBean = ArrayList()
+ dataBean.add((position + 1).toString())
+ dataBean.add(dataBeans[position].watchType)
+ dataBean.add(dataBeans[position].devcode)
+ dataBean.add(dataBeans[position].installDate)
+ dataBean.add(dataBeans[position].data)
+ dataBean.add(dataBeans[position].onlineStateName)
+ dataBean.add(dataBeans[position].logtime)
+ dataBean.add("查看历史数据")
+
+ //绑定子视图数据
+ val childDataAdapter = DeviceDataChildAdapter(context, dataBean)
+ holder.childRecyclerView.layoutManager =
+ LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
+ holder.childRecyclerView.adapter = childDataAdapter
+ childDataAdapter.setOnItemClickListener(object :
+ DeviceDataChildAdapter.OnItemClickListener {
+ override fun onOperationClicked() {
+ if (listener != null) {
+ listener!!.onChildClicked(dataBean[2])
+ }
+ }
+ })
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var childRecyclerView: RecyclerView = view.findViewById(R.id.childRecyclerView)
+ }
+
+ private var listener: OnChildItemClickListener? = null
+
+ interface OnChildItemClickListener {
+ fun onChildClicked(deviceCode: String)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnChildItemClickListener?) {
+ this.listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
new file mode 100644
index 0000000..cdc32f5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/DeviceDataTitleAdapter.kt
@@ -0,0 +1,43 @@
+package com.casic.app.smartwell.sanxi.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.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+
+class DeviceDataTitleAdapter(private var context: Context) :
+ RecyclerView.Adapter() {
+
+ private val titleArray =
+ arrayListOf("序号", "监控内容", "设备编号", "设备安装日期", "最新数据", "设备状态", "最后上传时间", "操作")
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): DeviceDataTitleAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_device_data_title, parent, false)
+ )
+ }
+
+ override fun getItemCount(): Int = titleArray.size
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val layoutParams = holder.itemView.layoutParams
+ if (position == 0) {
+ layoutParams.width = SizeUtil.dp2px(context, 55f)
+ } else {
+ layoutParams.width = SizeUtil.dp2px(context, 110f)
+ }
+ holder.itemView.layoutParams = layoutParams
+ holder.titleView.text = titleArray[position]
+ }
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var titleView: TextView = view.findViewById(R.id.titleView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
new file mode 100644
index 0000000..c15241c
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/adapter/ImageRecyclerViewAdapter.kt
@@ -0,0 +1,63 @@
+package com.casic.app.smartwell.sanxi.adapter
+
+import android.content.Context
+import android.view.Gravity
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.app.smartwell.sanxi.R
+import com.pengxh.app.multilib.utils.SizeUtil
+import com.qmuiteam.qmui.util.QMUIDisplayHelper
+
+
+/**
+ * 不可删减九宫格
+ * */
+class ImageRecyclerViewAdapter(private val context: Context, imageData: ArrayList) :
+ RecyclerView.Adapter() {
+
+ private val imageUrls: ArrayList = imageData
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val layoutWidth: Int =
+ SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = QMUIDisplayHelper.dp2px(context, 3)
+ val itemSize = (layoutWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ Glide.with(context).load(imageUrls[position])
+ .apply(RequestOptions().error(R.mipmap.load_image_error))
+ .into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ itemClickListener!!.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = imageUrls.size
+
+ private var itemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ itemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
new file mode 100644
index 0000000..d6ce151
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DeviceDataModel.java
@@ -0,0 +1,136 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DeviceDataModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String data;
+ private String devcode;
+ private String deviceId;
+ private String installDate;
+ private String logtime;
+ private String onlineState;
+ private String onlineStateName;
+ private String type;
+ private String value;
+ private String watchType;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getDeviceId() {
+ return deviceId;
+ }
+
+ public void setDeviceId(String deviceId) {
+ this.deviceId = deviceId;
+ }
+
+ public String getInstallDate() {
+ return installDate;
+ }
+
+ public void setInstallDate(String installDate) {
+ this.installDate = installDate;
+ }
+
+ public String getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(String logtime) {
+ this.logtime = logtime;
+ }
+
+ public String getOnlineState() {
+ return onlineState;
+ }
+
+ public void setOnlineState(String onlineState) {
+ this.onlineState = onlineState;
+ }
+
+ public String getOnlineStateName() {
+ return onlineStateName;
+ }
+
+ public void setOnlineStateName(String onlineStateName) {
+ this.onlineStateName = onlineStateName;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getWatchType() {
+ return watchType;
+ }
+
+ public void setWatchType(String watchType) {
+ this.watchType = watchType;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 7bf15e6..2a451ec 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -270,7 +270,7 @@
* @param id 窨井ID
*/
@GET("/well/watchDataByWell")
- suspend fun obtainMonitorResult(
+ suspend fun obtainDeviceDataByWell(
@Header("token") token: String,
@Query("id") id: String
): String
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index b40c104..47a00ed 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -258,13 +258,13 @@
return api.obtainWellType(AuthenticationHelper.token!!)
}
-// /**
-// * 获取井下监控设备列表
-// */
-// suspend fun obtainMonitorResult(id: String): String {
-// return api.obtainMonitorResult(AuthenticationHelper.token!!, id)
-// }
-//
+ /**
+ * 获取井下监控设备列表
+ */
+ suspend fun obtainDeviceDataByWell(id: String): String {
+ return api.obtainDeviceDataByWell(AuthenticationHelper.token!!, id)
+ }
+
// /**
// * 闸井布防撤防
// */
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
new file mode 100644
index 0000000..d9635f9
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/BigImageActivity.kt
@@ -0,0 +1,91 @@
+package com.casic.app.smartwell.sanxi.view;
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.core.content.ContextCompat
+import androidx.viewpager.widget.PagerAdapter
+import androidx.viewpager.widget.ViewPager
+import com.bumptech.glide.Glide
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.utils.PageNavigationManager
+import com.casic.app.smartwell.sanxi.utils.StatusBarColorUtil
+import com.gyf.immersionbar.ImmersionBar
+import com.luck.picture.lib.photoview.PhotoView
+import kotlinx.android.synthetic.main.activity_big_image.*
+import java.util.*
+
+
+class BigImageActivity : BaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_big_image
+
+ override fun setupTopBarLayout() {
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ }
+
+ override fun initData() {
+ val index = intent.getIntExtra("index", 0)
+ val urls = intent.getStringArrayListExtra("images")
+ if (urls == null || urls.size == 0) {
+ return
+ }
+ pageNumberView.text = String.format("(" + (index + 1) + "/" + urls.size + ")")
+ imagePagerView.adapter = BigImageAdapter(this, urls)
+ imagePagerView.currentItem = index
+ imagePagerView.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
+ override fun onPageScrollStateChanged(state: Int) {
+
+ }
+
+ override fun onPageScrolled(
+ position: Int,
+ positionOffset: Float,
+ positionOffsetPixels: Int
+ ) {
+
+ }
+
+ override fun onPageSelected(position: Int) {
+ pageNumberView.text = String.format("(" + (position + 1) + "/" + urls.size + ")")
+ }
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+
+ class BigImageAdapter(private var context: Context, imageList: ArrayList) :
+ PagerAdapter() {
+
+ private var images: ArrayList = imageList
+
+ override fun getCount(): Int = images.size
+
+ override fun isViewFromObject(view: View, obj: Any): Boolean = view == obj
+
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView: PhotoView = view.findViewById(R.id.photoView)
+ Glide.with(context).load(images[position]).into(photoView)
+ photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
+ container.addView(view)
+ //点击大图取消预览
+ photoView.setOnClickListener {
+ PageNavigationManager.currentActivity()?.finish()
+ }
+ return view
+ }
+
+ override fun destroyItem(container: ViewGroup, position: Int, obj: Any) {
+ container.removeView(obj as View)
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
new file mode 100644
index 0000000..b34be03
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -0,0 +1,146 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.amap.api.services.core.LatLonPoint
+import com.amap.api.services.geocoder.GeocodeResult
+import com.amap.api.services.geocoder.GeocodeSearch
+import com.amap.api.services.geocoder.RegeocodeQuery
+import com.amap.api.services.geocoder.RegeocodeResult
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
+import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
+import com.casic.app.smartwell.sanxi.adapter.ImageRecyclerViewAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class WellListDetailActivity : BaseActivity() {
+
+ private val kTag = "WellListDetailActivity"
+ private val geocoderSearch by lazy { GeocodeSearch(this) }
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var wellBeanJson: String
+
+ override fun initLayoutView(): Int = R.layout.activity_well_list_detail
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "井详情"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ val wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ if (wellBean != null) {
+ wellNameView.text = wellBean.wellName
+ wellCodeView.text = wellBean.wellCode
+ wellTypeView.text = wellBean.wellTypeName
+ ownerShipView.text = wellBean.deptName
+ val deep = if (wellBean.deep.isBlank()) {
+ 0
+ } else {
+ wellBean.deep
+ }
+ wellDepthView.text = deep.toString()
+ wellStateView.text = wellBean.bfztName
+ longitudeView.text = wellBean.lngGaode
+ latitudeView.text = wellBean.latGaode
+
+ if (wellBean.photos.toString().isBlank()) {
+ imageRecyclerView.visibility = View.GONE
+ photoTipsView.text = "无"
+ } else {
+ imageRecyclerView.visibility = View.VISIBLE
+ photoTipsView.visibility = View.GONE
+ //处理图片地址
+ val urls: ArrayList = ArrayList()
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ urls.add(path.combineImagePath())
+ }
+ }
+ val imageAdapter = ImageRecyclerViewAdapter(this, urls)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+ imageAdapter.setOnItemClickListener(object :
+ ImageRecyclerViewAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ if (urls[position].isEmpty()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, urls)
+ }
+ }
+ })
+ }
+
+ //根据经纬度获取省市区县
+ if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
+ "井经纬度异常,无法查看完整位置信息".show()
+ return
+ }
+ val queryParam = RegeocodeQuery(
+ LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
+ 200f,
+ GeocodeSearch.AMAP
+ )
+ geocoderSearch.getFromLocationAsyn(queryParam)
+ geocoderSearch.setOnGeocodeSearchListener(object :
+ GeocodeSearch.OnGeocodeSearchListener {
+ override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+ if (rCode == 1000) {
+ districtView.text = result?.regeocodeAddress?.formatAddress
+ }
+ }
+
+ override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
+
+ }
+ })
+ addressView.text = wellBean.position
+ maintenanceView.text = wellBean.responsibleDeptName
+
+ //绑定井下设备数据
+ wellViewModel.obtainDeviceDataByWell(wellBean.id.toString())
+ wellViewModel.deviceDataModel.observe(this, {
+ if (it.code == 200) {
+
+ val deviceDataTitleAdapter = DeviceDataTitleAdapter(this)
+ titleRecyclerView!!.layoutManager =
+ LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
+ titleRecyclerView!!.adapter = deviceDataTitleAdapter
+
+ val deviceDataListAdapter = DeviceDataListAdapter(this, it.data)
+ deviceRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ deviceRecyclerView!!.adapter = deviceDataListAdapter
+ deviceDataListAdapter.setOnItemClickListener(object :
+ DeviceDataListAdapter.OnChildItemClickListener {
+ override fun onChildClicked(deviceCode: String) {
+ //TODO 待完善
+ deviceCode.show()
+ }
+ })
+ }
+ })
+ }
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 57eb129..1202bd0 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -15,6 +15,7 @@
import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.extensions.showEmptyPage
+import com.casic.app.smartwell.sanxi.extensions.toJson
import com.casic.app.smartwell.sanxi.model.OwnerShipModel
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.WeakReferenceHandler
@@ -209,12 +210,7 @@
wellListAdapter.setOnItemClickListener(object :
WellListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
- val wellId = dataBeans[position].id.toString()
- if (wellId.isBlank()) {
- "井编号异常,无法查看详情".show()
- return
- }
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 1ce5a4f..515cb14 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -22,6 +22,7 @@
val wellTypeAndCountModel = MutableLiveData()
val wellListPageModel = MutableLiveData