diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 56dcc5c..657c766 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -12,18 +12,31 @@ import com.amap.api.services.geocoder.RegeocodeQuery import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R +import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.convertDrawable +import com.pengxh.kt.lite.extensions.dp2px +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction class TaskDetailAdapter( ctx: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) private val geoSearch by lazy { GeocodeSearch(ctx) } + private var handleAction = QMUISwipeAction.ActionBuilder() + .icon(R.mipmap.handle_task.convertDrawable(ctx)) + .textSize(16f.dp2px(ctx)) + .textColor(Color.WHITE) + .paddingStartEnd(16f.dp2px(ctx)).text("处置") + .backgroundColor(R.color.themeColor.convertColor(ctx)) + .build() + fun setRefreshData(dataRows: MutableList) { this.dataRows.clear() this.dataRows.addAll(dataRows) @@ -45,16 +58,19 @@ } } - 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)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == TYPE_TOP_TITLE) { + return 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)) + val view = inflater.inflate(R.layout.item_task_detail_rv_l, parent, false) + val swipeViewHolder = SwipeViewHolder(view) + swipeViewHolder.addSwipeAction(handleAction) + return swipeViewHolder } } - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - if (holder.itemViewType == TYPE_ITEM_DATA) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is SwipeViewHolder) { //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1 val item = dataRows[position - 1] @@ -96,6 +112,17 @@ .setText(R.id.verticalAngleView, item.pitch) .setText(R.id.isAlarmView, isAlarm) .setText(R.id.speedView, item.speed) + .setOnClickListener(R.id.operationView) { clickedListener?.onShowTextClicked(item) } } } + + private var clickedListener: OnClickedListener? = null + + interface OnClickedListener { + fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) + } + + fun setOnClickedListener(listener: OnClickedListener) { + clickedListener = listener + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 56dcc5c..657c766 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -12,18 +12,31 @@ import com.amap.api.services.geocoder.RegeocodeQuery import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R +import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.convertDrawable +import com.pengxh.kt.lite.extensions.dp2px +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction class TaskDetailAdapter( ctx: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) private val geoSearch by lazy { GeocodeSearch(ctx) } + private var handleAction = QMUISwipeAction.ActionBuilder() + .icon(R.mipmap.handle_task.convertDrawable(ctx)) + .textSize(16f.dp2px(ctx)) + .textColor(Color.WHITE) + .paddingStartEnd(16f.dp2px(ctx)).text("处置") + .backgroundColor(R.color.themeColor.convertColor(ctx)) + .build() + fun setRefreshData(dataRows: MutableList) { this.dataRows.clear() this.dataRows.addAll(dataRows) @@ -45,16 +58,19 @@ } } - 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)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == TYPE_TOP_TITLE) { + return 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)) + val view = inflater.inflate(R.layout.item_task_detail_rv_l, parent, false) + val swipeViewHolder = SwipeViewHolder(view) + swipeViewHolder.addSwipeAction(handleAction) + return swipeViewHolder } } - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - if (holder.itemViewType == TYPE_ITEM_DATA) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is SwipeViewHolder) { //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1 val item = dataRows[position - 1] @@ -96,6 +112,17 @@ .setText(R.id.verticalAngleView, item.pitch) .setText(R.id.isAlarmView, isAlarm) .setText(R.id.speedView, item.speed) + .setOnClickListener(R.id.operationView) { clickedListener?.onShowTextClicked(item) } } } + + private var clickedListener: OnClickedListener? = null + + interface OnClickedListener { + fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) + } + + fun setOnClickedListener(listener: OnClickedListener) { + clickedListener = listener + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt b/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt index 08c8656..de78471 100644 --- a/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt +++ b/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt @@ -77,4 +77,17 @@ view.setBackgroundColor(color) return this } + + /** + * 设置指定控件ID的点击事件 + * + * @param idRes 控件ID + * @param listener 监听接口 + * @return holder + */ + fun setOnClickListener(@IdRes idRes: Int, listener: View.OnClickListener?): SwipeViewHolder { + val view = getView(idRes) + view.setOnClickListener(listener) + return this + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 56dcc5c..657c766 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -12,18 +12,31 @@ import com.amap.api.services.geocoder.RegeocodeQuery import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R +import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.convertDrawable +import com.pengxh.kt.lite.extensions.dp2px +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction class TaskDetailAdapter( ctx: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) private val geoSearch by lazy { GeocodeSearch(ctx) } + private var handleAction = QMUISwipeAction.ActionBuilder() + .icon(R.mipmap.handle_task.convertDrawable(ctx)) + .textSize(16f.dp2px(ctx)) + .textColor(Color.WHITE) + .paddingStartEnd(16f.dp2px(ctx)).text("处置") + .backgroundColor(R.color.themeColor.convertColor(ctx)) + .build() + fun setRefreshData(dataRows: MutableList) { this.dataRows.clear() this.dataRows.addAll(dataRows) @@ -45,16 +58,19 @@ } } - 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)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == TYPE_TOP_TITLE) { + return 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)) + val view = inflater.inflate(R.layout.item_task_detail_rv_l, parent, false) + val swipeViewHolder = SwipeViewHolder(view) + swipeViewHolder.addSwipeAction(handleAction) + return swipeViewHolder } } - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - if (holder.itemViewType == TYPE_ITEM_DATA) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is SwipeViewHolder) { //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1 val item = dataRows[position - 1] @@ -96,6 +112,17 @@ .setText(R.id.verticalAngleView, item.pitch) .setText(R.id.isAlarmView, isAlarm) .setText(R.id.speedView, item.speed) + .setOnClickListener(R.id.operationView) { clickedListener?.onShowTextClicked(item) } } } + + private var clickedListener: OnClickedListener? = null + + interface OnClickedListener { + fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) + } + + fun setOnClickedListener(listener: OnClickedListener) { + clickedListener = listener + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt b/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt index 08c8656..de78471 100644 --- a/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt +++ b/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt @@ -77,4 +77,17 @@ view.setBackgroundColor(color) return this } + + /** + * 设置指定控件ID的点击事件 + * + * @param idRes 控件ID + * @param listener 监听接口 + * @return holder + */ + fun setOnClickListener(@IdRes idRes: Int, listener: View.OnClickListener?): SwipeViewHolder { + val view = getView(idRes) + view.setOnClickListener(listener) + return this + } } \ No newline at end of file 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 index de865bc..e3e0756 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -7,22 +7,31 @@ import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.RecyclerView import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskDetailModel +import com.casic.br.ktd.utils.LoadingDialogHub +import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.vm.TaskViewModel +import com.casic.br.ktd.widgets.AlertHandleControlDialog import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState +import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel + private lateinit var alarmViewModel: AlarmViewModel private lateinit var taskId: String private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" @@ -146,6 +155,8 @@ } } } + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } override fun handleMessage(msg: Message): Boolean { @@ -158,7 +169,16 @@ binding.emptyInclude.emptyLayout.visibility = View.GONE taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + //绑定侧滑事件 + swipeAction.attachToRecyclerView(binding.taskDetailView) binding.taskDetailView.adapter = taskDetailAdapter + taskDetailAdapter.setOnClickedListener(object : + TaskDetailAdapter.OnClickedListener { + override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) { + //TODO 播放视频 + item.taskId.show(this@TaskDetailActivity) + } + }) } } return true @@ -166,6 +186,7 @@ override fun onResume() { super.onResume() + swipeAction.clear() getTaskDetailByPage() } @@ -182,12 +203,62 @@ ) } + private val swipeAction = + QMUIRVItemSwipeAction(false, object : QMUIRVItemSwipeAction.Callback() { + override fun getSwipeDirection( + recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder + ): Int { + if (viewHolder is SwipeViewHolder) { + return QMUIRVItemSwipeAction.SWIPE_LEFT + } + //taskAdapter有两种布局,普通布局(标题)不需要侧滑 + return QMUIRVItemSwipeAction.SWIPE_NONE + } + + override fun onClickAction( + swipeAction: QMUIRVItemSwipeAction?, + selected: RecyclerView.ViewHolder?, + action: QMUISwipeAction? + ) { + super.onClickAction(swipeAction, selected, action) + //标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1 + val adapterPosition = selected!!.bindingAdapterPosition - 1 + val rowsModel = dataBeans[adapterPosition] + AlertHandleControlDialog.Builder() + .setContext(this@TaskDetailActivity) + .setTitle("报警处置") + .setMessage("请选择处置原因") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertHandleControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick(selected: String) { + swipeAction?.clear() + alarmViewModel.handleAlarm(rowsModel.alarmCode, selected, "") + } + }).build().show() + } + }) + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } override fun observeRequestState() { - + alarmViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后...") + LoadState.Success -> LoadingDialogHub.dismiss() + else -> { + LoadingDialogHub.dismiss() + "处理中失败,请重新操作".show(this) + } + } + } } override fun setupTopBarLayout() { diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 56dcc5c..657c766 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -12,18 +12,31 @@ import com.amap.api.services.geocoder.RegeocodeQuery import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R +import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.convertDrawable +import com.pengxh.kt.lite.extensions.dp2px +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction class TaskDetailAdapter( ctx: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) private val geoSearch by lazy { GeocodeSearch(ctx) } + private var handleAction = QMUISwipeAction.ActionBuilder() + .icon(R.mipmap.handle_task.convertDrawable(ctx)) + .textSize(16f.dp2px(ctx)) + .textColor(Color.WHITE) + .paddingStartEnd(16f.dp2px(ctx)).text("处置") + .backgroundColor(R.color.themeColor.convertColor(ctx)) + .build() + fun setRefreshData(dataRows: MutableList) { this.dataRows.clear() this.dataRows.addAll(dataRows) @@ -45,16 +58,19 @@ } } - 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)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + if (viewType == TYPE_TOP_TITLE) { + return 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)) + val view = inflater.inflate(R.layout.item_task_detail_rv_l, parent, false) + val swipeViewHolder = SwipeViewHolder(view) + swipeViewHolder.addSwipeAction(handleAction) + return swipeViewHolder } } - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - if (holder.itemViewType == TYPE_ITEM_DATA) { + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is SwipeViewHolder) { //绑定数据。标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1 val item = dataRows[position - 1] @@ -96,6 +112,17 @@ .setText(R.id.verticalAngleView, item.pitch) .setText(R.id.isAlarmView, isAlarm) .setText(R.id.speedView, item.speed) + .setOnClickListener(R.id.operationView) { clickedListener?.onShowTextClicked(item) } } } + + private var clickedListener: OnClickedListener? = null + + interface OnClickedListener { + fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) + } + + fun setOnClickedListener(listener: OnClickedListener) { + clickedListener = listener + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt b/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt index 08c8656..de78471 100644 --- a/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt +++ b/app/src/main/java/com/casic/br/ktd/holder/SwipeViewHolder.kt @@ -77,4 +77,17 @@ view.setBackgroundColor(color) return this } + + /** + * 设置指定控件ID的点击事件 + * + * @param idRes 控件ID + * @param listener 监听接口 + * @return holder + */ + fun setOnClickListener(@IdRes idRes: Int, listener: View.OnClickListener?): SwipeViewHolder { + val view = getView(idRes) + view.setOnClickListener(listener) + return this + } } \ No newline at end of file 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 index de865bc..e3e0756 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -7,22 +7,31 @@ import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.RecyclerView import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.holder.SwipeViewHolder import com.casic.br.ktd.model.TaskDetailModel +import com.casic.br.ktd.utils.LoadingDialogHub +import com.casic.br.ktd.vm.AlarmViewModel import com.casic.br.ktd.vm.TaskViewModel +import com.casic.br.ktd.widgets.AlertHandleControlDialog import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler +import com.pengxh.kt.lite.vm.LoadState +import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel + private lateinit var alarmViewModel: AlarmViewModel private lateinit var taskId: String private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" @@ -146,6 +155,8 @@ } } } + + alarmViewModel = ViewModelProvider(this)[AlarmViewModel::class.java] } override fun handleMessage(msg: Message): Boolean { @@ -158,7 +169,16 @@ binding.emptyInclude.emptyLayout.visibility = View.GONE taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + //绑定侧滑事件 + swipeAction.attachToRecyclerView(binding.taskDetailView) binding.taskDetailView.adapter = taskDetailAdapter + taskDetailAdapter.setOnClickedListener(object : + TaskDetailAdapter.OnClickedListener { + override fun onShowTextClicked(item: TaskDetailModel.DataModel.RowsModel) { + //TODO 播放视频 + item.taskId.show(this@TaskDetailActivity) + } + }) } } return true @@ -166,6 +186,7 @@ override fun onResume() { super.onResume() + swipeAction.clear() getTaskDetailByPage() } @@ -182,12 +203,62 @@ ) } + private val swipeAction = + QMUIRVItemSwipeAction(false, object : QMUIRVItemSwipeAction.Callback() { + override fun getSwipeDirection( + recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder + ): Int { + if (viewHolder is SwipeViewHolder) { + return QMUIRVItemSwipeAction.SWIPE_LEFT + } + //taskAdapter有两种布局,普通布局(标题)不需要侧滑 + return QMUIRVItemSwipeAction.SWIPE_NONE + } + + override fun onClickAction( + swipeAction: QMUIRVItemSwipeAction?, + selected: RecyclerView.ViewHolder?, + action: QMUISwipeAction? + ) { + super.onClickAction(swipeAction, selected, action) + //标题已经把position=0占用,但是size+1,所以需要数据绑定实际position-1 + val adapterPosition = selected!!.bindingAdapterPosition - 1 + val rowsModel = dataBeans[adapterPosition] + AlertHandleControlDialog.Builder() + .setContext(this@TaskDetailActivity) + .setTitle("报警处置") + .setMessage("请选择处置原因") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertHandleControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + + } + + override fun onConfirmClick(selected: String) { + swipeAction?.clear() + alarmViewModel.handleAlarm(rowsModel.alarmCode, selected, "") + } + }).build().show() + } + }) + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } override fun observeRequestState() { - + alarmViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后...") + LoadState.Success -> LoadingDialogHub.dismiss() + else -> { + LoadingDialogHub.dismiss() + "处理中失败,请重新操作".show(this) + } + } + } } override fun setupTopBarLayout() { 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 index ed1fc16..05f93fb 100644 --- a/app/src/main/res/layout/item_task_detail_rv_l.xml +++ b/app/src/main/res/layout/item_task_detail_rv_l.xml @@ -87,8 +87,9 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_15" android:layout_weight="1" + android:fontFamily="@font/fzzdhjt" android:gravity="center" - android:text="操作" - android:textColor="@color/black" + android:text="回放" + android:textColor="@color/blue" android:textSize="@dimen/sp_16" /> \ No newline at end of file