diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_blue.xml b/app/src/main/res/drawable/ic_add_blue.xml deleted file mode 100644 index 415972c..0000000 --- a/app/src/main/res/drawable/ic_add_blue.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_blue.xml b/app/src/main/res/drawable/ic_add_blue.xml deleted file mode 100644 index 415972c..0000000 --- a/app/src/main/res/drawable/ic_add_blue.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_add_white.xml b/app/src/main/res/drawable/ic_add_white.xml new file mode 100644 index 0000000..03dae7a --- /dev/null +++ b/app/src/main/res/drawable/ic_add_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_blue.xml b/app/src/main/res/drawable/ic_add_blue.xml deleted file mode 100644 index 415972c..0000000 --- a/app/src/main/res/drawable/ic_add_blue.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_add_white.xml b/app/src/main/res/drawable/ic_add_white.xml new file mode 100644 index 0000000..03dae7a --- /dev/null +++ b/app/src/main/res/drawable/ic_add_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_back.xml b/app/src/main/res/drawable/ic_left_back.xml index a1996c9..04ee5da 100644 --- a/app/src/main/res/drawable/ic_left_back.xml +++ b/app/src/main/res/drawable/ic_left_back.xml @@ -1,9 +1,9 @@ + android:pathData="M704,938.7c-10.9,0 -21.8,-4.2 -30.2,-12.5l-384,-384c-16.7,-16.7 -16.7,-43.7 0,-60.3l384,-384c16.7,-16.7 43.7,-16.7 60.3,0s16.7,43.7 0,60.3L380.3,512l353.8,353.8c16.7,16.7 16.7,43.7 0,60.3 -8.3,8.4 -19.2,12.6 -30.1,12.6z" /> diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_blue.xml b/app/src/main/res/drawable/ic_add_blue.xml deleted file mode 100644 index 415972c..0000000 --- a/app/src/main/res/drawable/ic_add_blue.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_add_white.xml b/app/src/main/res/drawable/ic_add_white.xml new file mode 100644 index 0000000..03dae7a --- /dev/null +++ b/app/src/main/res/drawable/ic_add_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_back.xml b/app/src/main/res/drawable/ic_left_back.xml index a1996c9..04ee5da 100644 --- a/app/src/main/res/drawable/ic_left_back.xml +++ b/app/src/main/res/drawable/ic_left_back.xml @@ -1,9 +1,9 @@ + android:pathData="M704,938.7c-10.9,0 -21.8,-4.2 -30.2,-12.5l-384,-384c-16.7,-16.7 -16.7,-43.7 0,-60.3l384,-384c16.7,-16.7 43.7,-16.7 60.3,0s16.7,43.7 0,60.3L380.3,512l353.8,353.8c16.7,16.7 16.7,43.7 0,60.3 -8.3,8.4 -19.2,12.6 -30.1,12.6z" /> diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 0f7e044..ead2635 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -42,7 +42,7 @@ android:layout_weight="1" android:gravity="end" android:text="2021-07-16 11:10:55" - android:textColor="@color/darkGray" + android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_16" /> @@ -65,9 +65,9 @@ @@ -95,7 +95,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:text="63906" - android:textColor="@color/darkGray" + android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_16" /> diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_blue.xml b/app/src/main/res/drawable/ic_add_blue.xml deleted file mode 100644 index 415972c..0000000 --- a/app/src/main/res/drawable/ic_add_blue.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_add_white.xml b/app/src/main/res/drawable/ic_add_white.xml new file mode 100644 index 0000000..03dae7a --- /dev/null +++ b/app/src/main/res/drawable/ic_add_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_back.xml b/app/src/main/res/drawable/ic_left_back.xml index a1996c9..04ee5da 100644 --- a/app/src/main/res/drawable/ic_left_back.xml +++ b/app/src/main/res/drawable/ic_left_back.xml @@ -1,9 +1,9 @@ + android:pathData="M704,938.7c-10.9,0 -21.8,-4.2 -30.2,-12.5l-384,-384c-16.7,-16.7 -16.7,-43.7 0,-60.3l384,-384c16.7,-16.7 43.7,-16.7 60.3,0s16.7,43.7 0,60.3L380.3,512l353.8,353.8c16.7,16.7 16.7,43.7 0,60.3 -8.3,8.4 -19.2,12.6 -30.1,12.6z" /> diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 0f7e044..ead2635 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -42,7 +42,7 @@ android:layout_weight="1" android:gravity="end" android:text="2021-07-16 11:10:55" - android:textColor="@color/darkGray" + android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_16" /> @@ -65,9 +65,9 @@ @@ -95,7 +95,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:text="63906" - android:textColor="@color/darkGray" + android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml index 3325a42..a737cd2 100644 --- a/app/src/main/res/layout/activity_event_list.xml +++ b/app/src/main/res/layout/activity_event_list.xml @@ -1,8 +1,9 @@ @@ -11,6 +12,7 @@ android:id="@+id/eventRecyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_10" - android:scrollbars="none" /> + android:layout_marginTop="@dimen/dp_5" + android:scrollbars="none" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 2b3c004..64b09c2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,8 +8,11 @@ + + + @@ -21,7 +24,7 @@ - + @@ -39,7 +42,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 0d7f214..0e2f815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,9 +19,11 @@ applicationId "com.casic.birmm.inspect" minSdkVersion 23 targetSdkVersion 31 - versionCode 1 - versionName "2.0.0" - ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } + versionCode 2 + versionName "1.0.1" + ndk { + abiFilters "armeabi", "armeabi-v7a", "arm64-v8" + } } buildTypes { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt index 1d9e30e..d30ea59 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt @@ -1,53 +1,44 @@ package com.casic.birmm.inspect.adapter -import android.annotation.SuppressLint 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.bumptech.glide.Glide import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.EventListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView -/** - * 根据id获取事件列表 - * */ class EventListAdapter( - context: Context, - dataRows: List + private val context: Context, + private val dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: List? = dataRows - private var layoutInflater: LayoutInflater? = null - - init { - layoutInflater = LayoutInflater.from(context) - } + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - val view: View = - layoutInflater!!.inflate(R.layout.item_inspect_rv, parent, false) - return ItemViewHolder(view) + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) } - @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { //绑定数据 - val rowsBean = dataRows?.get(position)!! + val rowsBean = dataRows[position] + val imageArray = rowsBean.images?.split(",") + Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) holder.inspectMsgView.text = rowsBean.name holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClick(position) - } + holder.itemView.setOnClickListener { + listener?.onClick(position) } } - override fun getItemCount(): Int = dataRows!!.size + override fun getItemCount(): Int = dataRows.size class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) @@ -63,6 +54,6 @@ } fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener + this.listener = onClickListener } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt deleted file mode 100644 index 2318e01..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ /dev/null @@ -1,62 +0,0 @@ -package com.casic.birmm.inspect.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.bumptech.glide.Glide -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventListModel -import com.qmuiteam.qmui.widget.QMUIRadiusImageView - -/** - * 事件查询 - * */ -class EventSearchListAdapter( - private val context: Context, - private val dataRows: MutableList -) : RecyclerView.Adapter() { - - private var layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) - ) - } - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - val imageArray = rowsBean.images?.split(",") - Glide.with(context).load(imageArray?.get(0)).into(holder.inspectImageView) - holder.inspectMsgView.text = rowsBean.name - holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") - holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") - //绑定事件 - holder.itemView.setOnClickListener { - listener?.onClick(position) - } - } - - override fun getItemCount(): Int = dataRows.size - - class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) - var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) - var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) - var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClick(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt new file mode 100644 index 0000000..a6c76f6 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectEventListAdapter.kt @@ -0,0 +1,55 @@ +package com.casic.birmm.inspect.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.birmm.inspect.R +import com.casic.birmm.inspect.model.TaskRecordModel +import com.qmuiteam.qmui.widget.QMUIRadiusImageView + +class InspectEventListAdapter( + context: Context, private val dataRows: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_inspect_rv, parent, false) + ) + } + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + holder.inspectMsgView.text = rowsBean.name + holder.inspectTypeView.text = String.format("类型:${rowsBean.type}") + holder.inspectDateView.text = String.format("上报时间:${rowsBean.createTime}") + //绑定事件 + holder.itemView.setOnClickListener { + listener?.onClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var inspectImageView: QMUIRadiusImageView = view.findViewById(R.id.inspectImageView) + var inspectMsgView: TextView = view.findViewById(R.id.inspectMsgView) + var inspectTypeView: TextView = view.findViewById(R.id.inspectTypeView) + var inspectDateView: TextView = view.findViewById(R.id.inspectDateView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClick(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt deleted file mode 100644 index b01a137..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseSingleModeActivity.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.casic.birmm.inspect.base - -import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.qmuiteam.qmui.util.QMUIStatusBarHelper - -/** - * 单机模式页面的基础类 - * */ -abstract class BaseSingleModeActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(initLayoutView()) - QMUIStatusBarHelper.translucent(this) //沉浸式状态栏 - setupTopBarLayout() - initData(savedInstanceState) - initEvent() - } - - /** - * 初始化xml布局 - */ - abstract fun initLayoutView(): Int - - /** - * 特定页面定制沉浸式状态栏 - */ - protected abstract fun setupTopBarLayout() - - /** - * 初始化默认数据 - */ - abstract fun initData(savedInstanceState: Bundle?) - - /** - * 初始化业务逻辑 - */ - abstract fun initEvent() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt new file mode 100644 index 0000000..8b33d26 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/base/KotlinMapBaseActivity.kt @@ -0,0 +1,83 @@ +package com.casic.birmm.inspect.base + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.os.Bundle +import android.provider.Settings +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import com.pengxh.kt.lite.extensions.isNetworkConnected +import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.widget.dialog.NoNetworkDialog + +/** + * 单机模式页面的基础类 + * */ +abstract class KotlinMapBaseActivity : AppCompatActivity() { + + private lateinit var broadcastManager: BroadcastManager + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(initLayoutView()) + setupTopBarLayout() + initData(savedInstanceState) + initEvent() + PageNavigationManager.addActivity(this) + broadcastManager = BroadcastManager.obtainInstance(this) + broadcastManager.addAction( + object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (!context!!.isNetworkConnected()) { + /** + * 捕获用户在有网情况下登录进入APP,后来又处于断网状态会导致闪退的Bug + * */ + try { + NoNetworkDialog.Builder() + .setContext(this@KotlinMapBaseActivity) + .setOnDialogButtonClickListener(object : + NoNetworkDialog.OnDialogButtonClickListener { + override fun onButtonClick() { + startActivity(Intent(Settings.ACTION_DATA_ROAMING_SETTINGS)) + } + }).build().show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + }, ConnectivityManager.CONNECTIVITY_ACTION + ) + } + + /** + * 初始化xml布局 + */ + abstract fun initLayoutView(): Int + + /** + * 特定页面定制沉浸式状态栏 + */ + abstract fun setupTopBarLayout() + + /** + * 初始化默认数据 + */ + abstract fun initData(savedInstanceState: Bundle?) + + /** + * 初始化业务逻辑 + */ + abstract fun initEvent() + + /** + * 取消协程 + * */ + override fun onDestroy() { + broadcastManager.destroy(ConnectivityManager.CONNECTIVITY_ACTION) + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index c1447af..12c92e6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -17,4 +17,12 @@ } } return builder.toString() +} + +fun addAll(vararg args: String): ArrayList { + val result = ArrayList() + args.forEach { + result.add(it) + } + return result } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 8e8821c..fed3a92 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -1,7 +1,8 @@ +package com.casic.birmm.inspect.utils.retrofit + import com.casic.birmm.inspect.model.* import com.casic.birmm.inspect.utils.AuthenticationHelper import com.casic.birmm.inspect.utils.LocaleConstant -import com.casic.birmm.inspect.utils.retrofit.RetrofitService import com.pengxh.kt.lite.utils.RetrofitFactory.createRetrofit import com.pengxh.kt.lite.utils.SaveKeyValues import okhttp3.MediaType.Companion.toMediaTypeOrNull diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt index 4701c40..f2a84e5 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -37,11 +37,11 @@ if (it.data!!.list!!.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, it.data!!.list!!) + val eventAdapter = InspectEventListAdapter(this, it.data!!.list!!) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(this@EventListActivity, EventDetailActivity::class.java) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 944be37..ab3a2ac 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -7,7 +7,7 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show @@ -40,7 +40,7 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var adapter: EventListAdapter override fun createViewModelByClass(): Class = EventQueryViewModel::class.java @@ -172,11 +172,11 @@ emptyView!!.show("抱歉,无法查询到相关记录", null) } else { emptyView!!.hide() - adapter = EventSearchListAdapter(this, dataBeans) + adapter = EventListAdapter(this, dataBeans) eventRecyclerView!!.layoutManager = LinearLayoutManager(this) eventRecyclerView!!.adapter = adapter adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { val intent = Intent(context, EventDetailActivity::class.java) val rowsBean = dataBeans[position] diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt index df2df2d..8510c31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventDetailActivity.kt @@ -9,6 +9,7 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -28,26 +29,24 @@ } override fun initData() { - createTimeView.text = intent.getStringExtra("createTime") - descriptionView.text = intent.getStringExtra("description") - val data = intent.getIntExtra("data", -1) - if (data == -1) { - dataView.text = "0.0" - } else { - dataView.text = String.format("$data.0") - } - val images = intent.getStringExtra("images") + val conditions = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! + createTimeView.text = conditions[0] + descriptionView.text = conditions[1] + val value = if (conditions[2].isBlank()) { + "0.0" + } else { + conditions[2] + ".0" + } + dataView.text = value /** * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg * */ val urls: ArrayList = ArrayList() - if (images != null) { - if (images.isNotEmpty()) { - val imageArray = images.split(",") - imageArray.forEach { - urls.add(it) - } + if (conditions[3].isNotEmpty()) { + val imageArray = conditions[3].split(",") + imageArray.forEach { + urls.add(it) } } //绑定图片 @@ -55,7 +54,7 @@ imageAdapter.setImageList(urls) imageGridView.adapter = imageAdapter imageGridView.setOnItemClickListener { _, _, position, _ -> - if (urls[position].isEmpty()) { + if (urls[position].isBlank()) { "图片加载失败,无法查看大图".show(this@SingleEventDetailActivity) } else { navigatePageTo(position, urls) @@ -64,6 +63,6 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt index e67f0e6..31f0f48 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleEventListActivity.kt @@ -1,18 +1,21 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager +import android.view.View import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.adapter.InspectEventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.utils.DataBaseManager import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_event_list.* import kotlinx.android.synthetic.main.include_base_title.* +import kotlinx.android.synthetic.main.include_base_title.view.* class SingleEventListActivity : KotlinBaseActivity() { @@ -22,41 +25,37 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { this.finish() } titleView.text = "事件清单" } override fun initData() { - val id = intent.getStringExtra("id")!! + val id = intent.getStringExtra(Constant.INTENT_PARAM)!! val dataRows = DataBaseManager.instance.queryTaskByInspection(id) if (dataRows.isEmpty()) { "抱歉,无法查询到相关记录".show(this) } else { - val eventAdapter = EventListAdapter(this, dataRows) - eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + val eventAdapter = InspectEventListAdapter(this, dataRows) eventRecyclerView.adapter = eventAdapter eventAdapter.setOnItemClickListener(object : - EventListAdapter.OnItemClickListener { + InspectEventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = - Intent( - this@SingleEventListActivity, - SingleEventDetailActivity::class.java + val rowsBean = dataRows[position] + navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() ) - val listBean = dataRows[position] - intent.putExtra("createTime", listBean.createTime) - intent.putExtra( - "description", - listBean.description!!.filterString() ) - intent.putExtra("data", listBean.data) - intent.putExtra("images", listBean.images) - startActivity(intent) } }) } } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt index 4579987..3e3ed70 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleInspectRouteActivity.kt @@ -1,9 +1,9 @@ package com.casic.birmm.inspect.view.single -import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log +import android.view.View import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory @@ -12,25 +12,23 @@ import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.base.KotlinMapBaseActivity import com.casic.birmm.inspect.model.NewRouteModel import com.casic.birmm.inspect.utils.DataBaseManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.PageNavigationManager import kotlinx.android.synthetic.main.activity_inspect_route.* import kotlinx.android.synthetic.main.include_base_title.* -class SingleInspectRouteActivity : BaseSingleModeActivity() { +class SingleInspectRouteActivity : KotlinMapBaseActivity() { - companion object { - private const val Tag = "SingleModeInspectRoute" - } - + private val kTag = "SingleInspectRouteActivity" private lateinit var aMap: AMap private lateinit var id: String @@ -40,11 +38,12 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + leftBackView.visibility = View.VISIBLE + leftBackView.setOnClickListener { finish() } titleView.text = "巡检记录(单机模式)" } override fun initData(savedInstanceState: Bundle?) { - PageNavigationManager.addActivity(this) mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -52,7 +51,7 @@ uiSettings.isRotateGesturesEnabled = false//不许地图随手势旋转角度 //根据id查询详情 - id = intent.getStringExtra("id")!! + id = intent.getStringExtra(Constant.INTENT_PARAM)!! val detailData = DataBaseManager.instance.queryInspectDetailById(id) inspectNameView.text = detailData.name userNameView.text = detailData.user @@ -61,10 +60,7 @@ //移动到巡检起始经纬度 aMap.moveCamera( CameraUpdateFactory.changeLatLng( - LatLng( - detailData.startLat, - detailData.startLng - ) + LatLng(detailData.startLat, detailData.startLng) ) ) aMap.moveCamera(CameraUpdateFactory.zoomTo(16.toFloat())) @@ -78,11 +74,11 @@ return } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - Log.d(Tag, "路线: $routeJson") + Log.d(kTag, "路线: $routeJson") val type = object : TypeToken>() {}.type val routeModels = Gson().fromJson>(routeJson, type) //画线 - val latLngPoints: ArrayList = ArrayList() + val latLngPoints = ArrayList() routeModels.forEach { routeModel -> latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) } @@ -92,11 +88,8 @@ } override fun initEvent() { - leftBackView.setOnClickListener { this.finish() } eventButton.setOnClickListener { - val intent = Intent(this, SingleEventListActivity::class.java) - intent.putExtra("id", id) - startActivity(intent) + navigatePageTo(id) } } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt index 0960ebc..725c22b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/SingleMainActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.adapter.ViewPagerAdapter import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.view.single.fragment.InspectPageFragment -import com.casic.birmm.inspect.view.single.fragment.LogPageFragment +import com.casic.birmm.inspect.view.single.fragment.LogRecordPageFragment import com.casic.birmm.inspect.view.single.fragment.SettingsPageFragment import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -29,7 +29,7 @@ init { fragmentPages.add(InspectPageFragment()) - fragmentPages.add(LogPageFragment()) + fragmentPages.add(LogRecordPageFragment()) fragmentPages.add(SettingsPageFragment()) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt index 420607a..da52201 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/EventListFragment.kt @@ -1,12 +1,11 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.EventSearchListAdapter +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.extensions.showEmptyPage @@ -17,6 +16,7 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_query_event.* @@ -30,7 +30,7 @@ class EventListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: EventSearchListAdapter + private lateinit var eventListAdapter: EventListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -87,20 +87,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } @@ -108,45 +104,39 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false - weakReferenceHandler.sendEmptyMessage(20210819) + weakReferenceHandler.sendEmptyMessage(20210820) } }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210820) } @@ -154,46 +144,35 @@ } } - private fun obtainEventList() { - - } - private val callback = Handler.Callback { if (it.what == 20210820) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + eventListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryEventByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210820) } } else { emptyView!!.hide() - adapter = EventSearchListAdapter(requireContext(), dataBeans) - eventRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - eventRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : - EventSearchListAdapter.OnItemClickListener { + eventListAdapter = EventListAdapter(requireContext(), dataBeans) + eventRecyclerView.adapter = eventListAdapter + eventListAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent( - requireContext(), SingleEventDetailActivity::class.java - ) val rowsBean = dataBeans[position] - intent.putExtra("createTime", rowsBean.createTime) - intent.putExtra( - "description", rowsBean.description!!.filterString() + requireContext().navigatePageTo( + addAll( + rowsBean.createTime.toString(), + rowsBean.description!!.filterString(), + rowsBean.data.toString(), + rowsBean.images.toString() + ) ) - intent.putExtra("data", rowsBean.data) - intent.putExtra("images", rowsBean.images) - startActivity(intent) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt index 419c50c..615c394 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectListFragment.kt @@ -1,10 +1,8 @@ package com.casic.birmm.inspect.view.single.fragment -import android.content.Intent import android.os.CountDownTimer import android.os.Handler import androidx.core.content.ContextCompat -import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.extensions.show @@ -16,14 +14,15 @@ import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.timestampToDate import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_query_inspect.* +import kotlinx.android.synthetic.main.fragment_inspect_list.* class InspectListFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: InspectListAdapter + private lateinit var inspectListAdapter: InspectListAdapter //本地数据库页码从0开始 private var pageIndex = 0 @@ -81,20 +80,16 @@ endTime = millsSeconds.timestampToDate() endDateView.setText(endTime) } - .build().show(childFragmentManager, "startDate") + .build().show(childFragmentManager, "endDate") } //开始搜索 searchView.setOnClickListener { keywords = inputTipsView.text.toString() pageIndex = 0 - dataBeans = - DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex - ) + dataBeans = DataBaseManager.instance.queryInspectionByCondition( + startTime, endTime, keywords, pageIndex + ) weakReferenceHandler.sendEmptyMessage(20210819) } @@ -102,21 +97,17 @@ isRefresh = true //刷新之后页码重置 pageIndex = 0 - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishRefresh() dataBeans.clear() dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) - refreshLayout.finishRefresh() isRefresh = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -125,24 +116,20 @@ refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - //延时1.5s加载 - object : CountDownTimer(1500, 500) { + object : CountDownTimer(1000, 500) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { + refreshLayout.finishLoadMore() val dataRows = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } dataBeans.addAll(dataRows) - refreshLayout.finishLoadMore() isLoadMore = false weakReferenceHandler.sendEmptyMessage(20210819) } @@ -153,30 +140,26 @@ private val callback = Handler.Callback { if (it.what == 20210819) { if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged() + inspectListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { emptyView!!.showEmptyPage { pageIndex = 0 dataBeans = DataBaseManager.instance.queryInspectionByCondition( - startTime, - endTime, - keywords, - pageIndex + startTime, endTime, keywords, pageIndex ) weakReferenceHandler.sendEmptyMessage(20210819) } } else { emptyView!!.hide() - adapter = InspectListAdapter(requireContext(), dataBeans) - inspectRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) - inspectRecyclerView!!.adapter = adapter - adapter.setOnItemClickListener(object : + inspectListAdapter = InspectListAdapter(requireContext(), dataBeans) + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickListener(object : InspectListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(context, SingleInspectRouteActivity::class.java) - intent.putExtra("id", dataBeans[position].id) - startActivity(intent) + requireContext().navigatePageTo( + dataBeans[position].id.toString() + ) } }) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt index 7ff8d13..3a8062d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/InspectPageFragment.kt @@ -40,6 +40,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.fragment_single_inspect.view.* +import kotlinx.android.synthetic.main.include_base_title.view.* class InspectPageFragment : Fragment() { @@ -60,15 +61,26 @@ private var isBluetoothOn = true private var curConnectState = false private var alarmCount = 0 - private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var blueToothBeans = ArrayList()//搜索展示列表 private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 private var isGeneratingTask = false - private var routeList: MutableList = ArrayList()//路线点集和 + private var routeList = ArrayList()//路线点集和 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { inspectView = inflater.inflate(R.layout.fragment_single_inspect, container, false) + inspectView.rightImageView.visibility = View.VISIBLE + inspectView.rightImageView.setOnClickListener { + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean + if (!isCompleted) { + "巡检任务未结束,请先结束之前的任务".show(requireContext()) + return@setOnClickListener + } + createNewInspection() + } vibrator = requireContext().getSystemService(Context.VIBRATOR_SERVICE) as Vibrator weakReferenceHandler = WeakReferenceHandler(callback) @@ -205,36 +217,42 @@ } } + private fun createNewInspection() { + AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") + .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") + .setOnDialogButtonClickListener(object : + AlertInputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(value: String) { + val currentTimeMillis = System.currentTimeMillis() + val completeDate = currentTimeMillis.timestampToCompleteDate() + + model = NewInspectionModel( + currentTimeMillis.id(), value, completeDate, + "", currentTimeMillis.timestampToDate(), + 0.0, 0.0, 0.0, 0.0, + "", resources.getString(R.string.app_name) + ) + startInspection() + } + + override fun onCancelClick() { + + } + }) + .build().show() + } + private fun selectInspectMode() { - val isCompleted = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_COMPLETED, true) as Boolean + val isCompleted = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_COMPLETED, true + ) as Boolean if (isCompleted) { - AlertInputDialog.Builder().setContext(requireContext()).setTitle("请输入巡检标签") - .setHintMessage("如:xxx区间巡检").setNegativeButton("放弃").setPositiveButton("开始巡检") - .setOnDialogButtonClickListener(object : - AlertInputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(value: String) { - val currentTimeMillis = System.currentTimeMillis() - val completeDate = currentTimeMillis.timestampToCompleteDate() - - model = NewInspectionModel( - currentTimeMillis.id(), value, completeDate, - "", currentTimeMillis.timestampToDate(), - 0.0, 0.0, 0.0, 0.0, - "", resources.getString(R.string.app_name) - ) - startInspection() - } - - override fun onCancelClick() { - - } - }) - .build().show() + createNewInspection() } else { - val currentInspection = - SaveKeyValues.getValue(LocaleConstant.INSPECTION_OBJECT, "") as String - if (currentInspection == "") { + val currentInspection = SaveKeyValues.getValue( + LocaleConstant.INSPECTION_OBJECT, "" + ) as String + if (currentInspection.isBlank()) { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("提示") diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt deleted file mode 100644 index 776e369..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogPageFragment.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.casic.birmm.inspect.view.single.fragment - -import android.widget.LinearLayout -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.SubViewPagerAdapter -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.dp2px -import kotlinx.android.synthetic.main.fragment_single_log.* -import java.util.* - -class LogPageFragment : KotlinBaseFragment() { - - private val viewPages: MutableList = ArrayList() - - init { - viewPages.add(InspectListFragment()) - viewPages.add(EventListFragment()) - } - - override fun initLayoutView(): Int = R.layout.fragment_single_log - - override fun setupTopBarLayout() { - - } - - override fun initData() { - val subViewAdapter = SubViewPagerAdapter( - childFragmentManager, arrayOf("巡检记录", "事件清单"), viewPages - ) - logViewPager.adapter = subViewAdapter - tabLayout.setupWithViewPager(logViewPager) - val linearLayout = tabLayout.getChildAt(0) as LinearLayout - linearLayout.dividerDrawable = ContextCompat.getDrawable( - requireContext(), R.drawable.layout_divider_vertical - ) - linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE - linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt new file mode 100644 index 0000000..2a7d58d --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/single/fragment/LogRecordPageFragment.kt @@ -0,0 +1,45 @@ +package com.casic.birmm.inspect.view.single.fragment + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.SubViewPagerAdapter +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.dp2px +import kotlinx.android.synthetic.main.fragment_single_log.* +import java.util.* + +class LogRecordPageFragment : KotlinBaseFragment() { + + private val viewPages: MutableList = ArrayList() + + init { + viewPages.add(InspectListFragment()) + viewPages.add(EventListFragment()) + } + + override fun initLayoutView(): Int = R.layout.fragment_single_log + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val subViewAdapter = SubViewPagerAdapter( + childFragmentManager, arrayOf("巡检记录", "事件记录"), viewPages + ) + logViewPager.adapter = subViewAdapter + tabLayout.setupWithViewPager(logViewPager) + val linearLayout = tabLayout.getChildAt(0) as LinearLayout + linearLayout.dividerDrawable = ContextCompat.getDrawable( + requireContext(), R.drawable.layout_divider_vertical + ) + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerPadding = 12.5f.dp2px(requireContext()) + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_add_blue.xml b/app/src/main/res/drawable/ic_add_blue.xml deleted file mode 100644 index 415972c..0000000 --- a/app/src/main/res/drawable/ic_add_blue.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_add_white.xml b/app/src/main/res/drawable/ic_add_white.xml new file mode 100644 index 0000000..03dae7a --- /dev/null +++ b/app/src/main/res/drawable/ic_add_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_back.xml b/app/src/main/res/drawable/ic_left_back.xml index a1996c9..04ee5da 100644 --- a/app/src/main/res/drawable/ic_left_back.xml +++ b/app/src/main/res/drawable/ic_left_back.xml @@ -1,9 +1,9 @@ + android:pathData="M704,938.7c-10.9,0 -21.8,-4.2 -30.2,-12.5l-384,-384c-16.7,-16.7 -16.7,-43.7 0,-60.3l384,-384c16.7,-16.7 43.7,-16.7 60.3,0s16.7,43.7 0,60.3L380.3,512l353.8,353.8c16.7,16.7 16.7,43.7 0,60.3 -8.3,8.4 -19.2,12.6 -30.1,12.6z" /> diff --git a/app/src/main/res/layout/activity_event_detail.xml b/app/src/main/res/layout/activity_event_detail.xml index 0f7e044..ead2635 100644 --- a/app/src/main/res/layout/activity_event_detail.xml +++ b/app/src/main/res/layout/activity_event_detail.xml @@ -42,7 +42,7 @@ android:layout_weight="1" android:gravity="end" android:text="2021-07-16 11:10:55" - android:textColor="@color/darkGray" + android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_16" /> @@ -65,9 +65,9 @@ @@ -95,7 +95,7 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:text="63906" - android:textColor="@color/darkGray" + android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml index 3325a42..a737cd2 100644 --- a/app/src/main/res/layout/activity_event_list.xml +++ b/app/src/main/res/layout/activity_event_list.xml @@ -1,8 +1,9 @@ @@ -11,6 +12,7 @@ android:id="@+id/eventRecyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_10" - android:scrollbars="none" /> + android:layout_marginTop="@dimen/dp_5" + android:scrollbars="none" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml index 10b0e67..a8cf6b7 100644 --- a/app/src/main/res/layout/activity_inspect_route.xml +++ b/app/src/main/res/layout/activity_inspect_route.xml @@ -1,6 +1,5 @@ @@ -10,81 +9,86 @@ + android:background="@color/mainBackColor"> - + android:background="@drawable/bg_solid_layout_white_radius_5" + android:orientation="horizontal" + android:paddingHorizontal="@dimen/dp_5" + android:paddingVertical="@dimen/dp_3"> - + - - + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> + + + + + + + + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> - - - - + android:text="2022-8-7 22:37:24" + android:textColor="@color/listAuxiliaryColor" + android:textSize="12sp" /> + +