diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
index bbe494d..b88846a 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
@@ -16,6 +16,7 @@
import com.casic.br.ktd.utils.LoadingDialogHub
import com.casic.br.ktd.utils.LocaleConstant
import com.casic.br.ktd.view.InspectionActivity
+import com.casic.br.ktd.view.TaskDetailActivity
import com.casic.br.ktd.vm.AlarmViewModel
import com.casic.br.ktd.vm.TaskViewModel
import com.casic.br.ktd.widgets.AlertControlDialog
@@ -111,7 +112,7 @@
taskAdapter.setOnItemCheckedListener(object :
TaskAdapter.OnItemCheckedListener {
override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) {
- "点击${item.taskCode}".show(requireContext())
+ requireContext().navigatePageTo(item.id)
}
override fun onItemChecked(items: ArrayList) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
index bbe494d..b88846a 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
@@ -16,6 +16,7 @@
import com.casic.br.ktd.utils.LoadingDialogHub
import com.casic.br.ktd.utils.LocaleConstant
import com.casic.br.ktd.view.InspectionActivity
+import com.casic.br.ktd.view.TaskDetailActivity
import com.casic.br.ktd.vm.AlarmViewModel
import com.casic.br.ktd.vm.TaskViewModel
import com.casic.br.ktd.widgets.AlertControlDialog
@@ -111,7 +112,7 @@
taskAdapter.setOnItemCheckedListener(object :
TaskAdapter.OnItemCheckedListener {
override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) {
- "点击${item.taskCode}".show(requireContext())
+ requireContext().navigatePageTo(item.id)
}
override fun onItemChecked(items: ArrayList) {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
new file mode 100644
index 0000000..0eafe3b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -0,0 +1,54 @@
+package com.casic.br.ktd.view
+
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.br.ktd.adapter.TaskDetailAdapter
+import com.casic.br.ktd.databinding.ActivityTaskDetailBinding
+import com.casic.br.ktd.vm.TaskViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.Constant
+
+class TaskDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "TaskDetailActivity"
+ override fun initEvent() {
+
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ val taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ val taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ taskViewModel.getTaskDetail(taskId)
+ taskViewModel.detailResult.observe(this) {
+ if (it.code == 200) {
+ Log.d(kTag, "initOnCreate => ${it.data.size}")
+ if (it.data.size == 0) {
+ binding.taskDetailView.visibility = View.GONE
+ binding.emptyInclude.emptyLayout.visibility = View.VISIBLE
+ } else {
+ binding.taskDetailView.visibility = View.VISIBLE
+ binding.emptyInclude.emptyLayout.visibility = View.GONE
+
+ val taskDetailAdapter = TaskDetailAdapter(this, it.data)
+ binding.taskDetailView.adapter = taskDetailAdapter
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityTaskDetailBinding {
+ return ActivityTaskDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
index bbe494d..b88846a 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
@@ -16,6 +16,7 @@
import com.casic.br.ktd.utils.LoadingDialogHub
import com.casic.br.ktd.utils.LocaleConstant
import com.casic.br.ktd.view.InspectionActivity
+import com.casic.br.ktd.view.TaskDetailActivity
import com.casic.br.ktd.vm.AlarmViewModel
import com.casic.br.ktd.vm.TaskViewModel
import com.casic.br.ktd.widgets.AlertControlDialog
@@ -111,7 +112,7 @@
taskAdapter.setOnItemCheckedListener(object :
TaskAdapter.OnItemCheckedListener {
override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) {
- "点击${item.taskCode}".show(requireContext())
+ requireContext().navigatePageTo(item.id)
}
override fun onItemChecked(items: ArrayList) {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
new file mode 100644
index 0000000..0eafe3b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -0,0 +1,54 @@
+package com.casic.br.ktd.view
+
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.br.ktd.adapter.TaskDetailAdapter
+import com.casic.br.ktd.databinding.ActivityTaskDetailBinding
+import com.casic.br.ktd.vm.TaskViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.Constant
+
+class TaskDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "TaskDetailActivity"
+ override fun initEvent() {
+
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ val taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ val taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ taskViewModel.getTaskDetail(taskId)
+ taskViewModel.detailResult.observe(this) {
+ if (it.code == 200) {
+ Log.d(kTag, "initOnCreate => ${it.data.size}")
+ if (it.data.size == 0) {
+ binding.taskDetailView.visibility = View.GONE
+ binding.emptyInclude.emptyLayout.visibility = View.VISIBLE
+ } else {
+ binding.taskDetailView.visibility = View.VISIBLE
+ binding.emptyInclude.emptyLayout.visibility = View.GONE
+
+ val taskDetailAdapter = TaskDetailAdapter(this, it.data)
+ binding.taskDetailView.adapter = taskDetailAdapter
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityTaskDetailBinding {
+ return ActivityTaskDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
index bbf00af..6c6f8d2 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
@@ -78,8 +78,8 @@
val response = RetrofitServiceManager.getTaskDetail(taskId)
val responseCode = response.separateResponseCode()
if (responseCode == 200) {
- addTaskResult.value = gson.fromJson(
- response, object : TypeToken() {}.type
+ detailResult.value = gson.fromJson(
+ response, object : TypeToken() {}.type
)
}
}, {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
index bbe494d..b88846a 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
@@ -16,6 +16,7 @@
import com.casic.br.ktd.utils.LoadingDialogHub
import com.casic.br.ktd.utils.LocaleConstant
import com.casic.br.ktd.view.InspectionActivity
+import com.casic.br.ktd.view.TaskDetailActivity
import com.casic.br.ktd.vm.AlarmViewModel
import com.casic.br.ktd.vm.TaskViewModel
import com.casic.br.ktd.widgets.AlertControlDialog
@@ -111,7 +112,7 @@
taskAdapter.setOnItemCheckedListener(object :
TaskAdapter.OnItemCheckedListener {
override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) {
- "点击${item.taskCode}".show(requireContext())
+ requireContext().navigatePageTo(item.id)
}
override fun onItemChecked(items: ArrayList) {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
new file mode 100644
index 0000000..0eafe3b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -0,0 +1,54 @@
+package com.casic.br.ktd.view
+
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.br.ktd.adapter.TaskDetailAdapter
+import com.casic.br.ktd.databinding.ActivityTaskDetailBinding
+import com.casic.br.ktd.vm.TaskViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.Constant
+
+class TaskDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "TaskDetailActivity"
+ override fun initEvent() {
+
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ val taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ val taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ taskViewModel.getTaskDetail(taskId)
+ taskViewModel.detailResult.observe(this) {
+ if (it.code == 200) {
+ Log.d(kTag, "initOnCreate => ${it.data.size}")
+ if (it.data.size == 0) {
+ binding.taskDetailView.visibility = View.GONE
+ binding.emptyInclude.emptyLayout.visibility = View.VISIBLE
+ } else {
+ binding.taskDetailView.visibility = View.VISIBLE
+ binding.emptyInclude.emptyLayout.visibility = View.GONE
+
+ val taskDetailAdapter = TaskDetailAdapter(this, it.data)
+ binding.taskDetailView.adapter = taskDetailAdapter
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityTaskDetailBinding {
+ return ActivityTaskDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
index bbf00af..6c6f8d2 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
@@ -78,8 +78,8 @@
val response = RetrofitServiceManager.getTaskDetail(taskId)
val responseCode = response.separateResponseCode()
if (responseCode == 200) {
- addTaskResult.value = gson.fromJson(
- response, object : TypeToken() {}.type
+ detailResult.value = gson.fromJson(
+ response, object : TypeToken() {}.type
)
}
}, {
diff --git a/app/src/main/res/layout/activity_task_detail.xml b/app/src/main/res/layout/activity_task_detail.xml
new file mode 100644
index 0000000..dc53d8f
--- /dev/null
+++ b/app/src/main/res/layout/activity_task_detail.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
index bbe494d..b88846a 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
@@ -16,6 +16,7 @@
import com.casic.br.ktd.utils.LoadingDialogHub
import com.casic.br.ktd.utils.LocaleConstant
import com.casic.br.ktd.view.InspectionActivity
+import com.casic.br.ktd.view.TaskDetailActivity
import com.casic.br.ktd.vm.AlarmViewModel
import com.casic.br.ktd.vm.TaskViewModel
import com.casic.br.ktd.widgets.AlertControlDialog
@@ -111,7 +112,7 @@
taskAdapter.setOnItemCheckedListener(object :
TaskAdapter.OnItemCheckedListener {
override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) {
- "点击${item.taskCode}".show(requireContext())
+ requireContext().navigatePageTo(item.id)
}
override fun onItemChecked(items: ArrayList) {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
new file mode 100644
index 0000000..0eafe3b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -0,0 +1,54 @@
+package com.casic.br.ktd.view
+
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.br.ktd.adapter.TaskDetailAdapter
+import com.casic.br.ktd.databinding.ActivityTaskDetailBinding
+import com.casic.br.ktd.vm.TaskViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.Constant
+
+class TaskDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "TaskDetailActivity"
+ override fun initEvent() {
+
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ val taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ val taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ taskViewModel.getTaskDetail(taskId)
+ taskViewModel.detailResult.observe(this) {
+ if (it.code == 200) {
+ Log.d(kTag, "initOnCreate => ${it.data.size}")
+ if (it.data.size == 0) {
+ binding.taskDetailView.visibility = View.GONE
+ binding.emptyInclude.emptyLayout.visibility = View.VISIBLE
+ } else {
+ binding.taskDetailView.visibility = View.VISIBLE
+ binding.emptyInclude.emptyLayout.visibility = View.GONE
+
+ val taskDetailAdapter = TaskDetailAdapter(this, it.data)
+ binding.taskDetailView.adapter = taskDetailAdapter
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityTaskDetailBinding {
+ return ActivityTaskDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
index bbf00af..6c6f8d2 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
@@ -78,8 +78,8 @@
val response = RetrofitServiceManager.getTaskDetail(taskId)
val responseCode = response.separateResponseCode()
if (responseCode == 200) {
- addTaskResult.value = gson.fromJson(
- response, object : TypeToken() {}.type
+ detailResult.value = gson.fromJson(
+ response, object : TypeToken() {}.type
)
}
}, {
diff --git a/app/src/main/res/layout/activity_task_detail.xml b/app/src/main/res/layout/activity_task_detail.xml
new file mode 100644
index 0000000..dc53d8f
--- /dev/null
+++ b/app/src/main/res/layout/activity_task_detail.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_task_detail_rv_l.xml b/app/src/main/res/layout/item_task_detail_rv_l.xml
new file mode 100644
index 0000000..9f30fe3
--- /dev/null
+++ b/app/src/main/res/layout/item_task_detail_rv_l.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bb27f43..c9820de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,9 @@
+
+) : RecyclerView.Adapter() {
+
+ private val TYPE_TOP_TITLE = 0
+ private val TYPE_ITEM_DATA = 1
+ private var inflater: LayoutInflater = LayoutInflater.from(ctx)
+
+ override fun getItemCount(): Int = dataRows.size + 1
+
+ override fun getItemViewType(position: Int): Int {
+ return if (position == 0) {
+ TYPE_TOP_TITLE
+ } else {
+ TYPE_ITEM_DATA
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ return if (viewType == TYPE_TOP_TITLE) {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l_title, parent, false))
+ } else {
+ ViewHolder(inflater.inflate(R.layout.item_task_detail_rv_l, parent, false))
+ }
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ if (holder.itemViewType == TYPE_ITEM_DATA) {
+ //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1
+ val item = dataRows[position - 1]
+
+ holder.setText(R.id.locateTimeView, item.ts)
+ .setText(R.id.gasValueView, item.gas)
+ .setText(R.id.horizontalAngleView, item.direction)
+ .setText(R.id.verticalAngleView, item.pitch)
+ .setText(R.id.isAlarmView, item.isAlarm)
+ .setText(R.id.alarmCodeView, item.alarmCode)
+ .setText(R.id.speedView, item.speed)
+ .setText(R.id.lngView, item.longitude)
+ .setText(R.id.latView, item.lagitude)
+ } else {
+ holder.setText(R.id.locateTimeView, "时间")
+ .setText(R.id.gasValueView, "气体浓度")
+ .setText(R.id.horizontalAngleView, "水平角度")
+ .setText(R.id.verticalAngleView, "垂直角度")
+ .setText(R.id.isAlarmView, "是否报警")
+ .setText(R.id.alarmCodeView, "报警编号")
+ .setText(R.id.speedView, "车速")
+ .setText(R.id.lngView, "经度")
+ .setText(R.id.latView, "纬度")
+ .setText(R.id.operationView, "操作")
+ }
+
+ //item背景色
+ if (position % 2 == 0) {
+ val linearLayout = holder.itemView.findViewById(R.id.rootView)
+ linearLayout.setBackgroundColor(Color.parseColor("#EEF1F6"))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
index bbe494d..b88846a 100644
--- a/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
+++ b/app/src/main/java/com/casic/br/ktd/fragment/TaskPageFragment.kt
@@ -16,6 +16,7 @@
import com.casic.br.ktd.utils.LoadingDialogHub
import com.casic.br.ktd.utils.LocaleConstant
import com.casic.br.ktd.view.InspectionActivity
+import com.casic.br.ktd.view.TaskDetailActivity
import com.casic.br.ktd.vm.AlarmViewModel
import com.casic.br.ktd.vm.TaskViewModel
import com.casic.br.ktd.widgets.AlertControlDialog
@@ -111,7 +112,7 @@
taskAdapter.setOnItemCheckedListener(object :
TaskAdapter.OnItemCheckedListener {
override fun onItemClicked(item: TaskListModel.DataModel.RowsModel) {
- "点击${item.taskCode}".show(requireContext())
+ requireContext().navigatePageTo(item.id)
}
override fun onItemChecked(items: ArrayList) {
diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
new file mode 100644
index 0000000..0eafe3b
--- /dev/null
+++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt
@@ -0,0 +1,54 @@
+package com.casic.br.ktd.view
+
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.casic.br.ktd.adapter.TaskDetailAdapter
+import com.casic.br.ktd.databinding.ActivityTaskDetailBinding
+import com.casic.br.ktd.vm.TaskViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.utils.Constant
+
+class TaskDetailActivity : KotlinBaseActivity() {
+
+ private val kTag = "TaskDetailActivity"
+ override fun initEvent() {
+
+ }
+
+ override fun initOnCreate(savedInstanceState: Bundle?) {
+ val taskId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+
+ val taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
+ taskViewModel.getTaskDetail(taskId)
+ taskViewModel.detailResult.observe(this) {
+ if (it.code == 200) {
+ Log.d(kTag, "initOnCreate => ${it.data.size}")
+ if (it.data.size == 0) {
+ binding.taskDetailView.visibility = View.GONE
+ binding.emptyInclude.emptyLayout.visibility = View.VISIBLE
+ } else {
+ binding.taskDetailView.visibility = View.VISIBLE
+ binding.emptyInclude.emptyLayout.visibility = View.GONE
+
+ val taskDetailAdapter = TaskDetailAdapter(this, it.data)
+ binding.taskDetailView.adapter = taskDetailAdapter
+ }
+ }
+ }
+ }
+
+ override fun initViewBinding(): ActivityTaskDetailBinding {
+ return ActivityTaskDetailBinding.inflate(layoutInflater)
+ }
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
index bbf00af..6c6f8d2 100644
--- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
+++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt
@@ -78,8 +78,8 @@
val response = RetrofitServiceManager.getTaskDetail(taskId)
val responseCode = response.separateResponseCode()
if (responseCode == 200) {
- addTaskResult.value = gson.fromJson(
- response, object : TypeToken() {}.type
+ detailResult.value = gson.fromJson(
+ response, object : TypeToken() {}.type
)
}
}, {
diff --git a/app/src/main/res/layout/activity_task_detail.xml b/app/src/main/res/layout/activity_task_detail.xml
new file mode 100644
index 0000000..dc53d8f
--- /dev/null
+++ b/app/src/main/res/layout/activity_task_detail.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_task_detail_rv_l.xml b/app/src/main/res/layout/item_task_detail_rv_l.xml
new file mode 100644
index 0000000..9f30fe3
--- /dev/null
+++ b/app/src/main/res/layout/item_task_detail_rv_l.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_task_detail_rv_l_title.xml b/app/src/main/res/layout/item_task_detail_rv_l_title.xml
new file mode 100644
index 0000000..9f30fe3
--- /dev/null
+++ b/app/src/main/res/layout/item_task_detail_rv_l_title.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file