package xn.hxp.weidith import android.annotation.SuppressLint import android.app.Activity import android.app.Dialog import android.content.IntentFilter import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.hardware.usb.UsbManager import android.os.Bundle import android.os.Handler import android.os.Looper import android.os.Message import android.util.Log import android.view.* import android.widget.* import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import xn.hxp.R import xn.hxp.comm.Constants import xn.hxp.receiver.OnSerialScanListener import xn.hxp.receiver.PortScanHelper import xn.hxp.receiver.UsbReceiver import xn.hxp.ui.PrintBean import xn.hxp.ui.adapter.CustomSpinnerAdapter import xn.hxp.ui.adapter.LabelDialogAdapter import com.blankj.utilcode.util.LogUtils import com.rc.httpcore.HttpConfig import com.rc.httpcore.bean.StockDetailsModel import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import xn.hxp.utils.AudioPlayer import java.time.Instant import java.time.LocalDateTime import java.time.format.DateTimeFormatter //新增-入库-列表 弹框 class LabelDialog( private val ac: Activity, private val number: String, private val layers: Int, private var density: String, private var chemicalName: String, private var ILin: IRfidClick ) : Dialog(ac) { private var listData: MutableList? = mutableListOf() private val mAdapter by lazy { LabelDialogAdapter() } private val mStoreyList = mutableListOf() //层数 private var mLayers = 1 //默认层数已选择的层数 private var recyclerView: RecyclerView? = null private var butClos: Button? = null ///刷卡===============获取RFID 电子标签===== private var mUsbReceiver: UsbReceiver? = null // 刷卡广播注册 private var mHandleScanEvent = false //当前是否已经获取过 usb返回的参数 @SuppressLint("NewApi") private val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS") @SuppressLint("NewApi") fun getCurrentDateTimeString(): String { return LocalDateTime.now().format(formatter) } private fun getLast8DigitsOfTimestamp(): String { val timestamp = System.currentTimeMillis().toString() // 获取当前时间戳并转换为字符串 return if (timestamp.length >= 8) { timestamp.takeLast(8) // 获取字符串的最后8位 } else { timestamp // 如果时间戳长度小于8位,返回完整的时间戳字符串 } } override fun onStart() { super.onStart() EventBus.getDefault().register(this) } override fun onStop() { super.onStop() mPortScanHelper.onPause() ac.unregisterReceiver(mUsbReceiver) EventBus.getDefault().unregister(this) } init { requestWindowFeature(Window.FEATURE_NO_TITLE) setContentView(R.layout.label_dialogs) window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) window?.setGravity(Gravity.CENTER) window?.setLayout( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT ) // 设置点击外部空白处不关闭对话框 setCanceledOnTouchOutside(false) } @SuppressLint("NewApi") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) registerUsbBroadcast() findViewById(R.id.chemicalName).text = "$chemicalName" findViewById(R.id.density).text = "净重:${density}" recyclerView = findViewById(R.id.rvView) //初始化柜子层数 for (i in 1..layers) { mStoreyList.add("$i") } val sPinner = findViewById(R.id.sPinner) val customAdapter = CustomSpinnerAdapter(ac, mStoreyList) sPinner.adapter = customAdapter sPinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { // 当用户选择某一项时被调用 mLayers = mStoreyList[position].toInt() LogUtils.i("=======当前1选择 $mLayers") } override fun onNothingSelected(parent: AdapterView<*>?) { // 当没有任何项被选择时被调用 LogUtils.i("=======DUOC") } } val toInt = number.toInt() + 1 //根据输入的数量 生成数据 for (i in 1 until toInt) { // 在这里编写循环体的逻辑 val currentDateTimeString = getCurrentDateTimeString() LogUtils.i("====CAS码生成 $number $currentDateTimeString") val takeLast = currentDateTimeString.takeLast(7) var wxCode = "${HttpConfig.API_BASE_QC_URL}?code=${takeLast}&type=9" var bean = StockDetailsModel(null, null, takeLast, i, wxCode) listData!!.add(bean) Thread.sleep(10) } val layoutManager = LinearLayoutManager(ac, LinearLayoutManager.VERTICAL, false) recyclerView!!.layoutManager = layoutManager recyclerView!!.adapter = mAdapter mAdapter.setNewInstance(listData) mAdapter.setOnItemChildClickListener { adapter, view, position -> // 在这里处理子View的点击事件 when (view.id) { R.id.imgDelete -> { var count = 1 mAdapter.data.removeAt(position) mAdapter.data.forEach { it.no = count count++ } // mAdapter.notifyItemRemoved(position) mAdapter.notifyDataSetChanged() } } } findViewById