[6.2.6]录包上报Reason改版
This commit is contained in:
@@ -3,6 +3,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.graphics.PixelFormat
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
@@ -13,10 +14,10 @@ import android.util.Log
|
||||
import android.view.*
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.ScaleAnimation
|
||||
import android.widget.CheckBox
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.flexbox.FlexboxLayout
|
||||
import com.iflytek.cloud.ErrorCode
|
||||
import com.iflytek.cloud.InitListener
|
||||
import com.iflytek.cloud.RecognizerListener
|
||||
@@ -47,6 +48,7 @@ import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||
import com.mogo.eagle.core.utilcode.util.BarUtils
|
||||
import com.mogo.eagle.core.utilcode.util.JsonParser
|
||||
import com.mogo.eagle.core.utilcode.util.SizeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
|
||||
@@ -58,7 +60,6 @@ import com.zhidao.loglib.upload.UploadManager
|
||||
import com.zhidao.loglib.util.FileUtil
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseAnalyticsManager
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.BadReasonListAdapter
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.record.RecordManager
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager
|
||||
@@ -66,6 +67,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.repository.store.BadCaseRea
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.util.RecordBitmapUtils
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
@@ -105,8 +107,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
private lateinit var tvInitiativeReport: TextView
|
||||
private lateinit var tvInitiativeCancel: TextView
|
||||
|
||||
private lateinit var rvInitiativeList: RecyclerView
|
||||
private var badReasonListAdapter: BadReasonListAdapter ?= null
|
||||
private lateinit var flReasonLayout: FlexboxLayout
|
||||
|
||||
private var audioStatus = false
|
||||
private var audioFileName:String?=null //录音文件名称
|
||||
@@ -174,25 +175,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
tvInitiativeReport = mFloatLayout.findViewById(R.id.tvInitiativeReport)
|
||||
tvInitiativeCancel = mFloatLayout.findViewById(R.id.tvInitiativeCancel)
|
||||
|
||||
rvInitiativeList = mFloatLayout.findViewById(R.id.rvInitiativeList)
|
||||
val linearLayoutManager = LinearLayoutManager(mActivity)
|
||||
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
|
||||
rvInitiativeList.layoutManager = linearLayoutManager
|
||||
badReasonListAdapter = BadReasonListAdapter(mActivity)
|
||||
badReasonListAdapter?.setListener(object: BadReasonListAdapter.ReasonClickListener{
|
||||
override fun onClick(reason: String, isChecked: Boolean) {
|
||||
if(isChecked){
|
||||
if(!uploadList.contains(reason)){
|
||||
uploadList.add(reason)
|
||||
}
|
||||
}else{
|
||||
if(uploadList.contains(reason)){
|
||||
uploadList.remove(reason)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
rvInitiativeList.adapter = badReasonListAdapter
|
||||
flReasonLayout = mFloatLayout.findViewById(R.id.flReasonLayout)
|
||||
|
||||
if(BadCaseConfig.windowNum<1){
|
||||
BadCaseConfig.windowNum = 1
|
||||
}
|
||||
@@ -201,6 +185,14 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
tvInitiativeTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
|
||||
tvInitiativeIdentity.text = "身份:${BadCaseConfig.identity}"
|
||||
|
||||
//展示缓存数据
|
||||
if(BadCaseReasonStore.getInitiativeDataRecord().isNotEmpty()){
|
||||
val parseList = parseData()
|
||||
if(parseList.isNotEmpty()){
|
||||
isLoadData = true
|
||||
setData(parseList)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 获取录包原因数据
|
||||
*/
|
||||
@@ -611,50 +603,52 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
|
||||
override fun onInitiativeResponse(list: List<RecordOptionEntity>) {
|
||||
if(!isLoadData && list.isNotEmpty()){
|
||||
badReasonListAdapter?.setData(list)
|
||||
setData(list)
|
||||
isLoadData = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onInitiativeError() {
|
||||
if(!isLoadData && BadCaseReasonStore.getInitiativeDataRecord().isNotEmpty()){
|
||||
val list = ArrayList<RecordOptionEntity>()
|
||||
val result = JSONArray(BadCaseReasonStore.getInitiativeDataRecord())
|
||||
if(result.length() > 0){
|
||||
for(i in 0 until result.length()){
|
||||
val entity = RecordOptionEntity()
|
||||
val jsonObject = result[i] as JSONObject
|
||||
val optionName = jsonObject.optString("optionName")
|
||||
entity.optionName = optionName
|
||||
val optionCode = jsonObject.optString("optionCode")
|
||||
entity.optionCode = optionCode
|
||||
val children = jsonObject.optJSONArray("children")
|
||||
if (children != null) {
|
||||
if(children.length() > 0){
|
||||
for(index in 0 until children.length()){
|
||||
val childJson = children[index] as JSONObject
|
||||
val child = RecordOptionEntity()
|
||||
val childOptionNme = childJson.optString("optionName")
|
||||
val childOptionCode = childJson.optString("optionCode")
|
||||
child.optionName = childOptionNme
|
||||
child.optionCode = childOptionCode
|
||||
entity.children.add(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
list.add(entity)
|
||||
}
|
||||
}
|
||||
if(list.isNotEmpty()){
|
||||
isLoadData = true
|
||||
badReasonListAdapter?.setData(list)
|
||||
}
|
||||
}else{
|
||||
if(BadCaseReasonStore.getInitiativeDataRecord().isEmpty()){
|
||||
ToastUtils.showShort("主动录包数据采集错误且无缓存数据可用")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析JSON数据
|
||||
*/
|
||||
private fun parseData(): ArrayList<RecordOptionEntity>{
|
||||
val list = ArrayList<RecordOptionEntity>()
|
||||
val result = JSONArray(BadCaseReasonStore.getInitiativeDataRecord())
|
||||
if(result.length() > 0){
|
||||
for(i in 0 until result.length()){
|
||||
val entity = RecordOptionEntity()
|
||||
val jsonObject = result[i] as JSONObject
|
||||
val optionName = jsonObject.optString("optionName")
|
||||
entity.optionName = optionName
|
||||
val optionCode = jsonObject.optString("optionCode")
|
||||
entity.optionCode = optionCode
|
||||
val children = jsonObject.optJSONArray("children")
|
||||
if (children != null) {
|
||||
if(children.length() > 0){
|
||||
for(index in 0 until children.length()){
|
||||
val childJson = children[index] as JSONObject
|
||||
val child = RecordOptionEntity()
|
||||
val childOptionNme = childJson.optString("optionName")
|
||||
val childOptionCode = childJson.optString("optionCode")
|
||||
child.optionName = childOptionNme
|
||||
child.optionCode = childOptionCode
|
||||
entity.children.add(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
list.add(entity)
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
override fun onUploadCosSuccess(cosUrl: String) {
|
||||
if(isUploadCos){
|
||||
//上传到服务器
|
||||
@@ -662,6 +656,50 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
}
|
||||
}
|
||||
|
||||
private fun setData(list: List<RecordOptionEntity>){
|
||||
val defineList = ArrayList<String>()
|
||||
//将列表中的所有二级列表取出,然后添加到最终需要展示的列表中defineList
|
||||
list.forEach { oneLevel ->
|
||||
if(oneLevel.children.isNotEmpty()){
|
||||
oneLevel.children.forEach { twoLevel->
|
||||
if(twoLevel.optionName.isNotBlank()){
|
||||
defineList.add(twoLevel.optionName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//绘制原因列表
|
||||
if(defineList.isNotEmpty()){
|
||||
defineList.forEach {
|
||||
val checkBox = CheckBox(mActivity)
|
||||
checkBox.setTextColor(Color.WHITE)
|
||||
val lp = FlexboxLayout.LayoutParams(
|
||||
FlexboxLayout.LayoutParams.WRAP_CONTENT,
|
||||
FlexboxLayout.LayoutParams.WRAP_CONTENT)
|
||||
checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
|
||||
checkBox.setPadding(
|
||||
SizeUtils.dp2px(18f),
|
||||
SizeUtils.dp2px(7f),
|
||||
SizeUtils.dp2px(18f),
|
||||
SizeUtils.dp2px(7f))
|
||||
checkBox.textSize = AutoSizeUtils.dp2px(mActivity,15f).toFloat()
|
||||
checkBox.text = it
|
||||
checkBox.setOnCheckedChangeListener{ _, isChecked ->
|
||||
if(isChecked){
|
||||
if(!uploadList.contains(it)){
|
||||
uploadList.add(it)
|
||||
}
|
||||
}else{
|
||||
if(uploadList.contains(it)){
|
||||
uploadList.remove(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
flReasonLayout.addView(checkBox,lp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 高精地图截图回调
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.graphics.PixelFormat
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
@@ -12,10 +13,10 @@ import android.util.Log
|
||||
import android.view.*
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.ScaleAnimation
|
||||
import android.widget.CheckBox
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.flexbox.FlexboxLayout
|
||||
import com.iflytek.cloud.ErrorCode
|
||||
import com.iflytek.cloud.InitListener
|
||||
import com.iflytek.cloud.RecognizerListener
|
||||
@@ -55,10 +56,10 @@ import kotlinx.coroutines.launch
|
||||
import com.zhidao.loglib.upload.UploadManager
|
||||
import com.zhidao.loglib.util.FileUtil
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseAnalyticsManager
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.BadReasonListAdapter
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseNetManager
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.repository.store.BadCaseReasonStore
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.util.RecordBitmapUtils
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
@@ -98,8 +99,6 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
|
||||
private var hasOperated: Boolean = false //是否有页面操作
|
||||
|
||||
private lateinit var rvPassiveList : RecyclerView
|
||||
private var badReasonListAdapter: BadReasonListAdapter?= null
|
||||
private var screenSavePath: String ?= null //截图保存路径
|
||||
|
||||
private var mInViewX = 0f
|
||||
@@ -123,6 +122,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
private lateinit var tvPassiveReport: TextView
|
||||
private lateinit var tvPassiveCancel: TextView
|
||||
|
||||
private lateinit var flReasonLayout: FlexboxLayout
|
||||
|
||||
// 语音听写对象
|
||||
private var mIat: SpeechRecognizer? = null
|
||||
|
||||
@@ -163,26 +164,16 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
viewAudioStart = mFloatLayout.findViewById(R.id.viewAudioStart)
|
||||
tvPassiveReport = mFloatLayout.findViewById(R.id.tvPassiveReport)
|
||||
tvPassiveCancel = mFloatLayout.findViewById(R.id.tvPassiveCancel)
|
||||
rvPassiveList = mFloatLayout.findViewById(R.id.rvPassiveList)
|
||||
val linearLayoutManager = LinearLayoutManager(mActivity)
|
||||
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
|
||||
rvPassiveList.layoutManager = linearLayoutManager
|
||||
badReasonListAdapter = BadReasonListAdapter(mActivity)
|
||||
badReasonListAdapter?.setListener(object: BadReasonListAdapter.ReasonClickListener{
|
||||
override fun onClick(reason: String, isChecked: Boolean) {
|
||||
hasOperated = true
|
||||
if(isChecked){
|
||||
if(!uploadList.contains(reason)){
|
||||
uploadList.add(reason)
|
||||
}
|
||||
}else{
|
||||
if(uploadList.contains(reason)){
|
||||
uploadList.remove(reason)
|
||||
}
|
||||
}
|
||||
flReasonLayout = mFloatLayout.findViewById(R.id.flReasonLayout)
|
||||
|
||||
//展示缓存数据
|
||||
if(BadCaseReasonStore.getPassiveDataRecord().isNotEmpty()){
|
||||
val parseList = parseData()
|
||||
if(parseList.isNotEmpty()){
|
||||
isLoadData = true
|
||||
setData(parseList)
|
||||
}
|
||||
})
|
||||
rvPassiveList.adapter = badReasonListAdapter
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取录包原因数据
|
||||
@@ -235,7 +226,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
uploadAudio()
|
||||
}
|
||||
//删除记录
|
||||
CallerMsgBoxManager.removeRecordInfo(mActivity, boxBean!!, recordKey!!)
|
||||
boxBean?.let {
|
||||
CallerMsgBoxManager.removeRecordInfo(mActivity,it, recordKey!!)
|
||||
}
|
||||
EventBus.getDefault().post(boxBean)
|
||||
}
|
||||
|
||||
@@ -244,7 +237,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
BadCaseConfig.windowNum--
|
||||
clickListener?.closeWindow()
|
||||
//删除记录
|
||||
CallerMsgBoxManager.removeRecordInfo(mActivity, boxBean!!, recordKey!!)
|
||||
boxBean?.let {
|
||||
CallerMsgBoxManager.removeRecordInfo(mActivity, it, recordKey!!)
|
||||
}
|
||||
EventBus.getDefault().post(boxBean)
|
||||
}
|
||||
|
||||
@@ -578,45 +573,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
|
||||
override fun onPassiveResponse(list: List<RecordOptionEntity>) {
|
||||
if(!isLoadData && list.isNotEmpty()){
|
||||
badReasonListAdapter?.setData(list)
|
||||
setData(list)
|
||||
isLoadData = true
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPassiveError() {
|
||||
if(!isLoadData && BadCaseReasonStore.getPassiveDataRecord().isNotEmpty()){
|
||||
val list = ArrayList<RecordOptionEntity>()
|
||||
val result = JSONArray(BadCaseReasonStore.getPassiveDataRecord())
|
||||
if(result.length() > 0){
|
||||
for(i in 0 until result.length()){
|
||||
val entity = RecordOptionEntity()
|
||||
val jsonObject = result[i] as JSONObject
|
||||
val optionName = jsonObject.optString("optionName")
|
||||
entity.optionName = optionName
|
||||
val optionCode = jsonObject.optString("optionCode")
|
||||
entity.optionCode = optionCode
|
||||
val children = jsonObject.optJSONArray("children")
|
||||
if (children != null) {
|
||||
if(children.length() > 0){
|
||||
for(index in 0 until children.length()){
|
||||
val childJson = children[index] as JSONObject
|
||||
val child = RecordOptionEntity()
|
||||
val childOptionNme = childJson.optString("optionName")
|
||||
val childOptionCode = childJson.optString("optionCode")
|
||||
child.optionName = childOptionNme
|
||||
child.optionCode = childOptionCode
|
||||
entity.children.add(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
list.add(entity)
|
||||
}
|
||||
}
|
||||
if(list.isNotEmpty()){
|
||||
isLoadData = true
|
||||
badReasonListAdapter?.setData(list)
|
||||
}
|
||||
}else{
|
||||
if(BadCaseReasonStore.getPassiveDataRecord().isEmpty()){
|
||||
ToastUtils.showShort("被动录包数据采集错误且无缓存数据可用")
|
||||
}
|
||||
}
|
||||
@@ -671,4 +634,82 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
RecordBitmapUtils.deleteExpiredFile(currentDay)
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析JSON数据
|
||||
*/
|
||||
private fun parseData(): ArrayList<RecordOptionEntity>{
|
||||
val list = ArrayList<RecordOptionEntity>()
|
||||
val result = JSONArray(BadCaseReasonStore.getPassiveDataRecord())
|
||||
if(result.length() > 0){
|
||||
for(i in 0 until result.length()){
|
||||
val entity = RecordOptionEntity()
|
||||
val jsonObject = result[i] as JSONObject
|
||||
val optionName = jsonObject.optString("optionName")
|
||||
entity.optionName = optionName
|
||||
val optionCode = jsonObject.optString("optionCode")
|
||||
entity.optionCode = optionCode
|
||||
val children = jsonObject.optJSONArray("children")
|
||||
if (children != null) {
|
||||
if(children.length() > 0){
|
||||
for(index in 0 until children.length()){
|
||||
val childJson = children[index] as JSONObject
|
||||
val child = RecordOptionEntity()
|
||||
val childOptionNme = childJson.optString("optionName")
|
||||
val childOptionCode = childJson.optString("optionCode")
|
||||
child.optionName = childOptionNme
|
||||
child.optionCode = childOptionCode
|
||||
entity.children.add(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
list.add(entity)
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
private fun setData(list: List<RecordOptionEntity>){
|
||||
val defineList = ArrayList<String>()
|
||||
//将列表中的所有二级列表取出,然后添加到最终需要展示的列表中defineList
|
||||
list.forEach { oneLevel ->
|
||||
if(oneLevel.children.isNotEmpty()){
|
||||
oneLevel.children.forEach { twoLevel->
|
||||
if(twoLevel.optionName.isNotBlank()){
|
||||
defineList.add(twoLevel.optionName)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//绘制原因列表
|
||||
if(defineList.isNotEmpty()){
|
||||
defineList.forEach {
|
||||
val checkBox = CheckBox(mActivity)
|
||||
checkBox.setTextColor(Color.WHITE)
|
||||
val lp = FlexboxLayout.LayoutParams(
|
||||
FlexboxLayout.LayoutParams.WRAP_CONTENT,
|
||||
FlexboxLayout.LayoutParams.WRAP_CONTENT)
|
||||
checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
|
||||
checkBox.setPadding(
|
||||
SizeUtils.dp2px(18f),
|
||||
SizeUtils.dp2px(7f),
|
||||
SizeUtils.dp2px(18f),
|
||||
SizeUtils.dp2px(7f))
|
||||
checkBox.textSize = AutoSizeUtils.dp2px(mActivity,15f).toFloat()
|
||||
checkBox.text = it
|
||||
checkBox.setOnCheckedChangeListener{ _, isChecked ->
|
||||
if(isChecked){
|
||||
if(!uploadList.contains(it)){
|
||||
uploadList.add(it)
|
||||
}
|
||||
}else{
|
||||
if(uploadList.contains(it)){
|
||||
uploadList.remove(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
flReasonLayout.addView(checkBox,lp)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
package com.zhjt.mogo_core_function_devatools.badcase.biz.adapter
|
||||
|
||||
import android.app.Activity
|
||||
import android.graphics.Color
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.CheckBox
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.flexbox.FlexboxLayout
|
||||
import com.mogo.eagle.core.data.deva.badcase.RecordOptionEntity
|
||||
import com.mogo.eagle.core.utilcode.util.SizeUtils
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
/**
|
||||
* 主动录包和被动录包采集原因列表适配器
|
||||
*/
|
||||
class BadReasonListAdapter(activity: Activity): RecyclerView.Adapter<BadReasonListAdapter.BadReasonHolder>() {
|
||||
|
||||
init {
|
||||
activity.also { this.mActivity = it }
|
||||
}
|
||||
|
||||
private var data:List<RecordOptionEntity> ?= null
|
||||
private var clickListener: ReasonClickListener ?= null
|
||||
private var mActivity: Activity
|
||||
|
||||
fun setData(data: List<RecordOptionEntity>){
|
||||
this.data = data
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun setListener(listener: ReasonClickListener){
|
||||
clickListener = listener
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BadReasonHolder {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_case_reason, parent, false)
|
||||
return BadReasonHolder(view)
|
||||
}
|
||||
|
||||
|
||||
override fun onBindViewHolder(holder: BadReasonHolder, position: Int) {
|
||||
data?.let {
|
||||
val entity = it[position]
|
||||
holder.tvReasonTitle.text = entity.optionName
|
||||
if(entity.children.size>0){
|
||||
entity.children.forEach { child->
|
||||
val checkBox = CheckBox(mActivity)
|
||||
checkBox.setTextColor(Color.WHITE)
|
||||
val lp = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.WRAP_CONTENT,
|
||||
FlexboxLayout.LayoutParams.WRAP_CONTENT)
|
||||
checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
|
||||
checkBox.setPadding(
|
||||
SizeUtils.dp2px(15f),
|
||||
SizeUtils.dp2px(5f),
|
||||
SizeUtils.dp2px(15f),
|
||||
SizeUtils.dp2px(5f))
|
||||
checkBox.textSize = AutoSizeUtils.dp2px(mActivity,15f).toFloat()
|
||||
checkBox.text = child.optionName
|
||||
checkBox.setOnCheckedChangeListener{ _, isChecked ->
|
||||
clickListener?.onClick(checkBox.text.toString(),isChecked)
|
||||
}
|
||||
holder.flReasonLayout.addView(checkBox,lp)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount() = data?.size ?: 0
|
||||
|
||||
class BadReasonHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var tvReasonTitle: TextView = itemView.findViewById(R.id.tvReasonTitle)
|
||||
var flReasonLayout: FlexboxLayout = itemView.findViewById(R.id.flReasonLayout)
|
||||
}
|
||||
|
||||
interface ReasonClickListener{
|
||||
fun onClick(reason: String,isChecked: Boolean)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -79,18 +79,31 @@ class BadCaseNetManager {
|
||||
}
|
||||
list.add(entity)
|
||||
}
|
||||
}
|
||||
//将结果回调到调用页面
|
||||
if(optionType == 1){
|
||||
//主动录包
|
||||
CallerDevaToolsNetManager.invokeInitiativeResponse(list)
|
||||
//缓存数据
|
||||
BadCaseReasonStore.setInitiativeDataRecord(it)
|
||||
} else if(optionType == 2){
|
||||
//被动录包
|
||||
CallerDevaToolsNetManager.invokePassiveResponse(list)
|
||||
//缓存数据
|
||||
BadCaseReasonStore.setPassiveDataRecord(it)
|
||||
//将结果回调到调用页面
|
||||
if(optionType == 1){
|
||||
if( it != BadCaseReasonStore.getInitiativeDataRecord()){
|
||||
//如果请求数据和缓存数据不一致,则更新数据和UI
|
||||
//主动录包
|
||||
CallerDevaToolsNetManager.invokeInitiativeResponse(list)
|
||||
//缓存数据
|
||||
BadCaseReasonStore.setInitiativeDataRecord(it)
|
||||
}
|
||||
} else if(optionType == 2){
|
||||
if(it != BadCaseReasonStore.getPassiveDataRecord()){
|
||||
//被动录包
|
||||
CallerDevaToolsNetManager.invokePassiveResponse(list)
|
||||
//缓存数据
|
||||
BadCaseReasonStore.setPassiveDataRecord(it)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(optionType == 1){
|
||||
//主动录包
|
||||
CallerDevaToolsNetManager.invokeInitiativeError()
|
||||
}else if(optionType == 2){
|
||||
//被动录包
|
||||
CallerDevaToolsNetManager.invokePassiveError()
|
||||
}
|
||||
}
|
||||
},
|
||||
onError =
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
>
|
||||
|
||||
<View
|
||||
android:id="@+id/tvReasonTitleDivider"
|
||||
android:layout_width="@dimen/dp_6"
|
||||
android:layout_height="@dimen/dp_29"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintRight_toLeftOf="@id/tvReasonTitle"
|
||||
android:background="#0176FF"
|
||||
android:layout_margin="@dimen/dp_15"
|
||||
/>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvReasonTitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/sp_32"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toTopOf="@id/tvReasonTitleDivider"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvReasonTitleDivider"
|
||||
app:layout_constraintStart_toEndOf="@id/tvReasonTitleDivider"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
/>
|
||||
|
||||
<com.google.android.flexbox.FlexboxLayout
|
||||
android:id="@+id/flReasonLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:alignContent="flex_start"
|
||||
app:alignItems="center"
|
||||
app:flexDirection="row"
|
||||
app:flexWrap="wrap"
|
||||
app:justifyContent="flex_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReasonTitleDivider"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_25"
|
||||
android:layout_marginStart="@dimen/dp_15"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -50,8 +50,7 @@
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rvInitiativeList"
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_0"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
@@ -60,8 +59,22 @@
|
||||
app:layout_constraintBottom_toTopOf="@id/viewAudioBg"
|
||||
android:scrollbars="vertical"
|
||||
android:fadeScrollbars="false"
|
||||
android:layout_margin="@dimen/dp_20"
|
||||
/>
|
||||
android:layout_margin="@dimen/dp_20">
|
||||
|
||||
<com.google.android.flexbox.FlexboxLayout
|
||||
android:id="@+id/flReasonLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:alignContent="flex_start"
|
||||
app:alignItems="center"
|
||||
app:flexDirection="row"
|
||||
app:flexWrap="wrap"
|
||||
app:justifyContent="flex_start"
|
||||
android:layout_margin="@dimen/dp_20"
|
||||
/>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvInitiativeReport"
|
||||
|
||||
@@ -50,18 +50,31 @@
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rvPassiveList"
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_0"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvPassiveNum"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvInitiativeNum"
|
||||
app:layout_constraintBottom_toTopOf="@id/viewAudioBg"
|
||||
android:scrollbars="vertical"
|
||||
android:fadeScrollbars="false"
|
||||
android:layout_margin="@dimen/dp_20"
|
||||
/>
|
||||
android:layout_margin="@dimen/dp_20">
|
||||
|
||||
<com.google.android.flexbox.FlexboxLayout
|
||||
android:id="@+id/flReasonLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:alignContent="flex_start"
|
||||
app:alignItems="center"
|
||||
app:flexDirection="row"
|
||||
app:flexWrap="wrap"
|
||||
app:justifyContent="flex_start"
|
||||
android:layout_margin="@dimen/dp_20"
|
||||
/>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvPassiveReport"
|
||||
|
||||
Reference in New Issue
Block a user