新增 监测设备在线情况列表完成四个

master
wenfei 1 month ago
parent 66926f6758
commit 2632362150

@ -540,6 +540,7 @@ public class Contans {
//http://10.19.0.17:1700/dserver/device/vibration/monitoring/list?deviceCode=002c005e&startTime=2026-01-21+14:37:00&endTime=2026-01-22+23:59:59&v=1769063841074
public final static String DeviceAlermInfoDataListUrl = "dserver/device/vibration/monitoring/list";
public final static String DeviceOnlineStatusUrl = "dserver/device/online/data";
//设备在线列表
public final static String DeviceOnlineStatusListUrl = "dserver/device/list";
//人员组织结构模块 用户验证接口token
public final static String AUTHENTICATIONLOGINTOKEN = "AUTHENTICATIONLOGINTOKEN";

@ -0,0 +1,112 @@
package com.rehome.zhdcoa.adapter
import android.content.Context
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.rehome.zhdcoa.Listener.OnItemClickListener
import com.rehome.zhdcoa.base.BaseViewBindingAdapter
import com.rehome.zhdcoa.bean.DeviceOnlineStatusListResultBean
import com.rehome.zhdcoa.databinding.AdapterDeviceOnlineStatusListBinding
import com.rehome.zhdcoa.utils.GsonUtils
class DeviceOnlineStatusListAdapter(var context: Context,var data: MutableList<Any>,var type: String,var onItemClickListener: OnItemClickListener) : BaseViewBindingAdapter<AdapterDeviceOnlineStatusListBinding>(context){
override fun getCount(): Int {
return data.count()
}
override fun getItem(position: Int): Any {
return data[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
fun setTypeTemp(typeTemp: String) {
this.type=typeTemp
}
override fun getBinding(inflater: LayoutInflater,parent: ViewGroup?) = AdapterDeviceOnlineStatusListBinding.inflate(inflater, parent, false)
override fun handleData(position: Int, binding: AdapterDeviceOnlineStatusListBinding) {
Log.i("app",type)
val item: Any = data[position]
if(type=="测振测温设备"){
val itemBean:DeviceOnlineStatusListResultBean.DeviceItemCwcz? = GsonUtils.GsonToBean(GsonUtils.GsonString(item),
DeviceOnlineStatusListResultBean.DeviceItemCwcz::class.java)
binding.llCwcz.visibility= View.VISIBLE
binding.llYzjc.visibility= View.GONE
binding.llLljc.visibility= View.GONE
binding.llRcx.visibility= View.GONE
if(itemBean!=null){
binding.tvSbbh.text = itemBean.id
binding.tvIp.text = itemBean.ip
binding.tvPort.text = itemBean.port
binding.tvDl.text = itemBean.voltage
binding.tvSbmc.text = itemBean.name
binding.tvSj.text = itemBean.lastOnlineTime
binding.tvPhotoManage.setOnClickListener {
onItemClickListener.onItemClick(position,binding.tvPhotoManage)
}
}
}
if(type=="油质监测设备"){
val itemBean:DeviceOnlineStatusListResultBean.DeviceItemYzjc? = GsonUtils.GsonToBean(GsonUtils.GsonString(item),
DeviceOnlineStatusListResultBean.DeviceItemYzjc::class.java)
binding.llCwcz.visibility= View.GONE
binding.llYzjc.visibility= View.VISIBLE
binding.llLljc.visibility= View.GONE
binding.llRcx.visibility= View.GONE
if(itemBean!=null){
binding.tvSbbhYzjc.text = itemBean.id
binding.tvSbmcYzjc.text = itemBean.name
binding.tvSjYzjc.text = itemBean.lastOnlineTime
}
}
if(type=="燃料测温设备"){
val itemBean:DeviceOnlineStatusListResultBean.DeviceItemRlcw? = GsonUtils.GsonToBean(GsonUtils.GsonString(item),
DeviceOnlineStatusListResultBean.DeviceItemRlcw::class.java)
binding.llCwcz.visibility= View.GONE
binding.llYzjc.visibility= View.GONE
binding.llLljc.visibility= View.VISIBLE
binding.llRcx.visibility= View.GONE
if(itemBean!=null){
binding.tvSbbhLljc.text = itemBean.id
binding.tvIpLljc.text = itemBean.ip
binding.tvPortLljc.text = itemBean.port
binding.tvSbmcLljc.text = itemBean.name
binding.tvSjLljc.text = itemBean.lastOnlineTime
}
}
if(type=="热成像测温设备"){
val itemBean:DeviceOnlineStatusListResultBean.DeviceItemRcqcw? = GsonUtils.GsonToBean(GsonUtils.GsonString(item),
DeviceOnlineStatusListResultBean.DeviceItemRcqcw::class.java)
binding.llCwcz.visibility= View.GONE
binding.llYzjc.visibility= View.GONE
binding.llLljc.visibility= View.GONE
binding.llRcx.visibility= View.VISIBLE
if(itemBean!=null){
binding.tvSbbhRcx.text = itemBean.id
binding.tvSbmcRcx.text = itemBean.name
binding.tvSjRcx.text = itemBean.lastOnlineTime
}
}
if(type=="zigBee 传感器"){
}
// binding.tvSbwz.text = item.deviceName
// binding.tvSbid.text = item.deviceCode
// binding.tvZj.text = item.specialtyStr
// binding.tvBjqx.text = item.description
// binding.tvSj.text = item.warningTime
}
}

@ -0,0 +1,686 @@
package com.rehome.zhdcoa.bean;
import java.util.List;
import java.util.Objects;
public class DeviceOnlineStatusListResultBean extends DeviceAlarmBaseBean{
private Page data;
public Page getData() {
return data;
}
public void setData(Page data) {
this.data = data;
}
public static class Page{
/**
*
*/
private Long pageNo;
/**
*
*/
private Long pageSize;
/**
*
*/
private Long totalRow;
/**
*
*/
private Long totalPage;
/**
*
*/
private List<Object> dataList;
public Long getPageNo() {
return pageNo;
}
public void setPageNo(Long pageNo) {
this.pageNo = pageNo;
}
public Long getPageSize() {
return pageSize;
}
public void setPageSize(Long pageSize) {
this.pageSize = pageSize;
}
public Long getTotalRow() {
return totalRow;
}
public void setTotalRow(Long totalRow) {
this.totalRow = totalRow;
}
public Long getTotalPage() {
return totalPage;
}
public void setTotalPage(Long totalPage) {
this.totalPage = totalPage;
}
public List<Object> getDataList() {
return dataList;
}
public void setDataList(List<Object> dataList) {
this.dataList = dataList;
}
}
//测振测温设备
public static class DeviceItemCwcz {
private String id;//id
private String name;//设备名称
private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208
private String lastOnlineTime;//最后在线时间
private String unit;//机组
private String specialty;//专业
private String ip;//ip
private String port;//端口
private String voltage;//电量 测振测温设备
private String positionName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getLastOnlineTime() {
return lastOnlineTime;
}
public void setLastOnlineTime(String lastOnlineTime) {
this.lastOnlineTime = lastOnlineTime;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getSpecialty() {
return specialty;
}
public void setSpecialty(String specialty) {
this.specialty = specialty;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getVoltage() {
return voltage;
}
public void setVoltage(String voltage) {
this.voltage = voltage;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
}
//油质监测设备
public static class DeviceItemYzjc {
private String id;//id
private String name;//设备名称
private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208
private String lastOnlineTime;//最后在线时间
private String positionName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getLastOnlineTime() {
return lastOnlineTime;
}
public void setLastOnlineTime(String lastOnlineTime) {
this.lastOnlineTime = lastOnlineTime;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
}
//燃料测温设备
public static class DeviceItemRlcw {
private String id;//id
private String name;//设备名称
private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208
private String lastOnlineTime;//最后在线时间
private String ip;//ip
private String port;//端口
private Double alarmHighValue;//报警高值 燃料测温设备
private Double alarmLowValue;//报警低值 燃料测温设备
private Double warningHighValue;//报警高值 燃料测温设备
private Double warningLowValue;//报警高值 燃料测温设备
private String status;//燃料测温设备
private String detail;//燃料测温设备
private String alarmCount;//燃料测温设备
private String alarmFirstTime;//燃料测温设备
private String alarmLastTime;//燃料测温设备
private Double temperature;//温度 燃料测温设备
private String positionName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getLastOnlineTime() {
return lastOnlineTime;
}
public void setLastOnlineTime(String lastOnlineTime) {
this.lastOnlineTime = lastOnlineTime;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public Double getAlarmHighValue() {
return alarmHighValue;
}
public void setAlarmHighValue(Double alarmHighValue) {
this.alarmHighValue = alarmHighValue;
}
public Double getAlarmLowValue() {
return alarmLowValue;
}
public void setAlarmLowValue(Double alarmLowValue) {
this.alarmLowValue = alarmLowValue;
}
public Double getWarningHighValue() {
return warningHighValue;
}
public void setWarningHighValue(Double warningHighValue) {
this.warningHighValue = warningHighValue;
}
public Double getWarningLowValue() {
return warningLowValue;
}
public void setWarningLowValue(Double warningLowValue) {
this.warningLowValue = warningLowValue;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public String getAlarmCount() {
return alarmCount;
}
public void setAlarmCount(String alarmCount) {
this.alarmCount = alarmCount;
}
public String getAlarmFirstTime() {
return alarmFirstTime;
}
public void setAlarmFirstTime(String alarmFirstTime) {
this.alarmFirstTime = alarmFirstTime;
}
public String getAlarmLastTime() {
return alarmLastTime;
}
public void setAlarmLastTime(String alarmLastTime) {
this.alarmLastTime = alarmLastTime;
}
public Double getTemperature() {
return temperature;
}
public void setTemperature(Double temperature) {
this.temperature = temperature;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
}
//热成像测温设备
public static class DeviceItemRcqcw {
private String id;//id
private String name;//设备名称
private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208
private String lastOnlineTime;//最后在线时间
private String ip;//ip
private String ruleId;// 热成像测温设备
private String areaId;// 区域,对应区域列表下nodeList下的的nodeKey
private String positionName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getLastOnlineTime() {
return lastOnlineTime;
}
public void setLastOnlineTime(String lastOnlineTime) {
this.lastOnlineTime = lastOnlineTime;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getRuleId() {
return ruleId;
}
public void setRuleId(String ruleId) {
this.ruleId = ruleId;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
public String getPositionName() {
return positionName;
}
public void setPositionName(String positionName) {
this.positionName = positionName;
}
}
//ZigBee传感器
public static class DeviceItemZigBee {
private Long id;//id
private String name;//设备名称
private String type;//设备类型
private String category;//设备类型 ZigBee传感器
private String unit;//机组
private String defaultRpm;
private Double sampleLength;//采样长度 ZigBee传感器
private Double sampleFreq;//采样频率 ZigBee传感器
private String bearingNumber;//轴承型号 ZigBee传感器
private String deviceId;//id ZigBee传感器
private String deviceCode;//设备编号 ZigBee传感器
private Double componentId;
private Boolean enable;
private String alarmEnableList;
private String alarmThresholdList;
private Boolean online;
private String healthValue;
private Double healthType;
private String areaId;
private String area;
private String ruleId;
private String installTime;
private String runningTime;
private String fileName;
private String sendTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getDefaultRpm() {
return defaultRpm;
}
public void setDefaultRpm(String defaultRpm) {
this.defaultRpm = defaultRpm;
}
public Double getSampleLength() {
return sampleLength;
}
public void setSampleLength(Double sampleLength) {
this.sampleLength = sampleLength;
}
public Double getSampleFreq() {
return sampleFreq;
}
public void setSampleFreq(Double sampleFreq) {
this.sampleFreq = sampleFreq;
}
public String getBearingNumber() {
return bearingNumber;
}
public void setBearingNumber(String bearingNumber) {
this.bearingNumber = bearingNumber;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public Double getComponentId() {
return componentId;
}
public void setComponentId(Double componentId) {
this.componentId = componentId;
}
public Boolean getEnable() {
return enable;
}
public void setEnable(Boolean enable) {
this.enable = enable;
}
public String getAlarmEnableList() {
return alarmEnableList;
}
public void setAlarmEnableList(String alarmEnableList) {
this.alarmEnableList = alarmEnableList;
}
public String getAlarmThresholdList() {
return alarmThresholdList;
}
public void setAlarmThresholdList(String alarmThresholdList) {
this.alarmThresholdList = alarmThresholdList;
}
public Boolean getOnline() {
return online;
}
public void setOnline(Boolean online) {
this.online = online;
}
public String getHealthValue() {
return healthValue;
}
public void setHealthValue(String healthValue) {
this.healthValue = healthValue;
}
public Double getHealthType() {
return healthType;
}
public void setHealthType(Double healthType) {
this.healthType = healthType;
}
public String getAreaId() {
return areaId;
}
public void setAreaId(String areaId) {
this.areaId = areaId;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getRuleId() {
return ruleId;
}
public void setRuleId(String ruleId) {
this.ruleId = ruleId;
}
public String getInstallTime() {
return installTime;
}
public void setInstallTime(String installTime) {
this.installTime = installTime;
}
public String getRunningTime() {
return runningTime;
}
public void setRunningTime(String runningTime) {
this.runningTime = runningTime;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getSendTime() {
return sendTime;
}
public void setSendTime(String sendTime) {
this.sendTime = sendTime;
}
}
}

@ -32,8 +32,6 @@ import com.yolanda.nohttp.rest.Response
*/
class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceAlarmInfofoBinding>() {
private lateinit var headView: View
private var datas: MutableList<DeviceAlarmListResultBean.DeviceWarning> = mutableListOf()//报警数据列表
val specialtyList = mutableListOf<String>("all", "STEAM_TURBINE", "CYCLIZATION", "BOILER", "ELECTRICAL")
@ -42,8 +40,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
private lateinit var spinnerAdapter:ArrayAdapter<CharSequence>
private lateinit var launcherResultQRCode: ActivityResultLauncher<Intent>
private var pageNo = 1
private var pageSize = 20
@ -82,10 +78,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
}
}
launcherResultQRCode = createQRCodeActivityResultLauncher()
binding.lv.emptyView = binding.tvNodata
headView = View.inflate(this, R.layout.item_work_risk_list, null)
deviceAlarmInfoAdapter = DeviceAlarmInfoAdapter(context, datas)
@ -105,7 +98,8 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
}
binding.btnQuery.setOnClickListener {
authenticationLoginDeviceAlermInfoRsa()
pageNo=1
authenticationLoginDeviceAlarmInfoRsa()
}
binding.lv.setInterface(LoadListView.ILoadListener {
@ -121,23 +115,49 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
//创建一个ActivityResultLauncher
private fun createQRCodeActivityResultLauncher(): ActivityResultLauncher<Intent> {
//kotlin写法
return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
val data = it.data
val resultCode = it.resultCode
if (resultCode == RESULT_OK) {
if (data != null) {
val qrCodeStr = data.getStringExtra("code") ?: ""
showLog(qrCodeStr)
if(!TextUtils.isEmpty(qrCodeStr)){
//刷新列表数据
authenticationLoginDeviceAlermInfoRsa()
}
}
}
}
}
// private fun createQRCodeActivityResultLauncher(): ActivityResultLauncher<Intent> {
// //kotlin写法
// return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
// val data = it.data
// val resultCode = it.resultCode
// if (resultCode == RESULT_OK) {
// if (data != null) {
// val qrCodeStr = data.getStringExtra("code") ?: ""
// showLog(qrCodeStr)
// if(!TextUtils.isEmpty(qrCodeStr)){
// //刷新列表数据
// authenticationLoginDeviceAlarmInfoRsa()
// }
// }
// }
// }
// }
// private fun authenticationLoginDeviceAlarmInfoRsa() {
// try {
// //AI三维登录接口
// val userName = Contans.SP.DeviceAlermInfoAccount
// val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal)
// val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr(
// Contans.SP.DeviceAlermInfoPwd,
// RSAAndroid.publicRsaKeyLocal
// )
// showLog(userName)
// showLog(strPublicDecode)
// AuthenticationLoginAIUtils.authenticationDeviceAlermInfoShowProgress(
// this, userName, strPublicDecode
// ) { _, token ->
// if (token != null && token == "") {
// showToast("设备状态智能监测及分析平台登录失败")
// } else {
// //登录成功
// getAlarmListData()
// }
// }
// } catch (e: Exception) {
// e.printStackTrace()
// }
// }
private fun authenticationLoginDeviceAlarmInfoRsa() {
try {
@ -148,34 +168,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
Contans.SP.DeviceAlermInfoPwd,
RSAAndroid.publicRsaKeyLocal
)
showLog(userName)
showLog(strPublicDecode)
AuthenticationLoginAIUtils.authenticationDeviceAlermInfoShowProgress(
this, userName, strPublicDecode
) { _, token ->
if (token != null && token == "") {
showToast("设备状态智能监测及分析平台登录失败")
} else {
//登录成功
getAlermListData()
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
private fun authenticationLoginDeviceAlermInfoRsa() {
try {
//AI三维登录接口
val userName = Contans.SP.DeviceAlermInfoAccount
val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal)
val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr(
Contans.SP.DeviceAlermInfoPwd,
RSAAndroid.publicRsaKeyLocal
)
// showLog(userName)
// showLog(strPublicDecode)
AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress(
this, userName, strPublicDecode
) { _, token ->
@ -183,7 +175,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
showToast("设备状态智能监测及分析平台登录失败")
} else {
//登录成功
getAlermListData()
getAlarmListData()
}
}
} catch (e: Exception) {
@ -191,7 +183,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
}
}
private fun getAlermListData() {
private fun getAlarmListData() {
val request = NoHttp.createStringRequest(
Contans.IP + Contans.DeviceAlermInfoListUrl,
RequestMethod.GET
@ -236,13 +228,13 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
datas.addAll(bean.data.dataList)
deviceAlarmInfoAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.GONE
headView.visibility = View.VISIBLE
binding.lv.visibility=View.VISIBLE
pageNo++
}else{
datas.clear()
deviceAlarmInfoAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.VISIBLE
headView.visibility = View.VISIBLE
binding.lv.visibility=View.GONE
}
}
@ -291,7 +283,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
datas.addAll(bean.data.dataList)
deviceAlarmInfoAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.GONE
headView.visibility = View.VISIBLE
pageNo++
binding.lv.loadComplete()
}else{

@ -1,21 +1,44 @@
package com.rehome.zhdcoa.ui.activity
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.ArrayAdapter
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.rehome.zhdcoa.Contans
import com.rehome.zhdcoa.Listener.OnItemClickListener
import com.rehome.zhdcoa.R
import com.rehome.zhdcoa.adapter.DeviceAlarmInfoAdapter
import com.rehome.zhdcoa.adapter.DeviceOnlineStatusListAdapter
import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding
import com.rehome.zhdcoa.bean.DeviceAlarmListResultBean
import com.rehome.zhdcoa.bean.DeviceOnlineStatusListResultBean
import com.rehome.zhdcoa.databinding.ActivityDeviceOnlineStatusListBinding
import com.rehome.zhdcoa.utils.AuthenticationLoginAIUtils
import com.rehome.zhdcoa.utils.GsonUtils
import com.rehome.zhdcoa.utils.HttpListener
import com.rehome.zhdcoa.utils.NohttpUtils
import com.rehome.zhdcoa.utils.RSAAndroid
import com.rehome.zhdcoa.weiget.OAToolbar
import com.yolanda.nohttp.NoHttp
import com.yolanda.nohttp.RequestMethod
import com.yolanda.nohttp.rest.Response
class DeviceOnlineStatusListActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceOnlineStatusListBinding>() {
val specialtyList = mutableListOf<String>("VIBRATION", "OIL", "FUEL", "THERMAL IMAGER", "VIBRATION_ZB")
val typeList = mutableListOf<String>("VIBRATION", "OIL", "FUEL", "THERMAL_IMAGER", "VIBRATION_ZB")
private lateinit var spinnerAdapter: ArrayAdapter<CharSequence>
//options:[{ value:'online',label:'在线”}{value:'offline',label:'离线”}1
private var dataList: MutableList<Any> = mutableListOf()//数据列表
private lateinit var deviceOnlineStatusListAdapter: DeviceOnlineStatusListAdapter
private var pageNo = 1
private var pageSize = 20
override fun getViewBinding() = ActivityDeviceOnlineStatusListBinding.inflate(layoutInflater)
@ -34,9 +57,200 @@ class DeviceOnlineStatusListActivity : BaseActivityOaToolbarViewBinding<Activity
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
binding.spZy.adapter = spinnerAdapter
binding.btnQuery.setOnClickListener {
pageNo=1
authenticationLoginDeviceAlarmInfoRsa()
}
val typeTemp:String = binding.spZy.selectedItem.toString()
showLog("typeTemp:")
showLog(typeTemp)
binding.lv.emptyView = binding.tvNodata
deviceOnlineStatusListAdapter = DeviceOnlineStatusListAdapter(context, dataList,typeTemp
) { position, _ -> {
val item = dataList[position]
showLog(GsonUtils.GsonString(item))
} }
binding.lv.adapter = deviceOnlineStatusListAdapter
binding.tvNodata.visibility= View.VISIBLE
binding.lv.visibility=View.GONE
}
override fun initData() {
authenticationLoginDeviceAlarmInfoRsa()
}
private fun authenticationLoginDeviceAlarmInfoRsa() {
try {
//AI三维登录接口
val userName = Contans.SP.DeviceAlermInfoAccount
val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal)
val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr(
Contans.SP.DeviceAlermInfoPwd,
RSAAndroid.publicRsaKeyLocal
)
AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress(
this, userName, strPublicDecode
) { _, token ->
if (token != null && token == "") {
showToast("设备状态智能监测及分析平台登录失败")
} else {
//登录成功
getAlarmListData()
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
private fun getAlarmListData() {
val request = NoHttp.createStringRequest(
Contans.IP + Contans.DeviceOnlineStatusListUrl,
RequestMethod.GET
)
request.add("pageNo",pageNo)
request.add("pageSize",pageSize)
val typeTemp:String = binding.spZy.selectedItem.toString()
//binding.spZy.getSelectedItemPosition()
// if(!TextUtils.isEmpty(zyTemp)){
// request.add("specialty",zyTemp)
// }
val typeIndex:Int = binding.spZy.selectedItemPosition
request.add("type",typeList[typeIndex])
if(binding.rb1.isChecked){
request.add("online",true)
}
if(binding.rb2.isChecked){
request.add("online",false)
}
showLog(typeTemp)
val keyword = binding.etKey.text.toString().trim()
if(!TextUtils.isEmpty(keyword)){
request.add("keyword",keyword)
}
NohttpUtils.getInstance().add(this, 0, request, object : HttpListener<String?> {
override fun onSucceed(what: Int, response: Response<String?>?) {
val result = response?.get()
showLog("----------------")
showLog(result)
/**
* //测振测温设备
* {
* "id": "002c00ad",
* "name": "2#湿磨电动机头部",
* "position": "F8C0AD454B904F1381EF0BBAA8656129",
* "lastOnlineTime": "2026-02-04 09:41:24",
* "unit": "2号机组",
* "specialty": "电气",
* "ip": "172.16.5.232",
* "port": "1883",
* "voltage": 74.0
* }
* //油质监测设备
* {
* "id": "192.168.34.204_502",
* "name": "2B小机油箱",
* "position": "1EEB173E896242F5A4BD1C74BC5D89C8",
* "lastOnlineTime": "2025-07-24 15:38:24"
* }
* //燃料测温设备
* {
* "id": "5FDA",
* "name": "6-C9A尾部滚筒右",
* "position": "ABAA12A926C145EF958703A87B3DE7FE",
* "lastOnlineTime": "2026-02-05 09:39:41",
* "alarmHighValue": 80.0,
* "alarmLowValue": 75.0,
* "warningHighValue": 68.0,
* "warningLowValue": 62.0,
* "status": "0",
* "detail": null,
* "alarmCount": null,
* "alarmFirstTime": null,
* "alarmLastTime": null,
* "temperature": 22.6,
* "ip": "172.16.5.232",
* "port": "1883"
* }
* //热成像测温设备
* {
* "id": "172.16.1.115",
* "name": "1号发电机B相接头\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000",
* "position": null,
* "lastOnlineTime": "2026-02-05 09:38:25",
* "ip": "172.16.1.115",
* "ruleId": "3",
* "areaId": "1EEB173E896242F5A4BD1C74BC5D8888"
* }
* //ZigBee传感器
* {
* "id": 2,
* "name": "1B前置泵 AB0008",
* "type": "VIBRATION_ACCELERATION",
* "category": "ZigBee",
* "filterUpperCutoffFreq": 5000.0,
* "filterLowerCutoffFreq": 1000,
* "unit": null,
* "defaultRpm": "1485.0",
* "sampleLength": 16384.0,
* "sampleFreq": 30000.0,
* "bearingNumber": "6224-C3",
* "deviceId": "ac65f9fffeab0008",
* "deviceCode": "AB0008",
* "componentId": 2,
* "enable": true,
* "alarmEnableList": "[false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]",
* "alarmThresholdList": "[[0,0,0,0],[0,2.8,0,4.5],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]",
* "online": true,
* "healthValue": null,
* "healthType": null,
* "areaId": "E8AA982417AC4A4D92EFE1CA08352101",
* "area": "1号锅炉0米",
* "installTime": "2026-01-19 14:20:51",
* "runningTime": null,
* "fileName": null,
* "sendTime": null
* }
*/
val bean = GsonUtils.GsonToBean(
result,
DeviceOnlineStatusListResultBean::class.java
)
showLog(GsonUtils.GsonString(bean))
if (bean != null && bean.code == 20000 && bean.isSuccess && bean.data != null && bean.data.dataList != null && bean.data.dataList.size>0) {
dataList.clear()
dataList.addAll(bean.data.dataList)
deviceOnlineStatusListAdapter.setTypeTemp(binding.spZy.selectedItem.toString())
deviceOnlineStatusListAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.GONE
binding.lv.visibility=View.VISIBLE
pageNo++
}else{
dataList.clear()
deviceOnlineStatusListAdapter.setTypeTemp(binding.spZy.selectedItem.toString())
deviceOnlineStatusListAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.VISIBLE
binding.lv.visibility=View.GONE
}
}
override fun onFailed(what: Int, response: Response<String?>?) {
}
})
}
//查区域列表。http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208
}

@ -134,7 +134,7 @@
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="0dp"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"

@ -0,0 +1,592 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/ll_cwcz"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关IP:" />
<TextView
android:id="@+id/tv_ip"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关端口:" />
<TextView
android:id="@+id/tv_port"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电量:" />
<TextView
android:id="@+id/tv_dl"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_photo_manage"
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|end"
android:textColor="#0080ff"
android:layout_marginEnd="10dp"
android:text="图片管理"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_yzjc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_lljc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关IP:" />
<TextView
android:id="@+id/tv_ip_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关端口:" />
<TextView
android:id="@+id/tv_port_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_rcx"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
Loading…
Cancel
Save