diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index 58f9e46..fe1e87d 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -4,17 +4,20 @@
import android.graphics.Typeface
import android.os.Handler
import android.util.Log
+import androidx.lifecycle.ViewModelProvider
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.adapter.OtherDeviceAdapter
import com.casic.br.adapter.RecommendAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.selectCategory
+import com.casic.br.model.OtherDeviceListModel
import com.casic.br.model.RecommendModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
-import com.casic.br.view.LoginActivity
import com.casic.br.view.device.*
+import com.casic.br.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.WeakReferenceHandler
@@ -34,7 +37,10 @@
private val kTag = "DevicePageFragment"
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private lateinit var otherDeviceAdapter: OtherDeviceAdapter
+ private lateinit var deviceViewModel: DeviceViewModel
private var dataBeans: MutableList = ArrayList()
+ private var dataModes: MutableList = ArrayList()
private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -47,6 +53,23 @@
override fun initData() {
weakReferenceHandler = WeakReferenceHandler(callback)
+ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java]
+ deviceViewModel.listModel.observe(this, {
+ if (it.code == 200) {
+ val deviceBeans = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataModes.clear()
+ dataModes = deviceBeans
+ isRefresh = false
+ }
+ else -> {
+ dataModes = deviceBeans
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022112301)
+ }
+ })
//TODO 热门推荐
val imageArray = arrayOf(
@@ -82,6 +105,7 @@
override fun onResume() {
super.onResume()
+ isRefresh = true
TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
@@ -103,6 +127,7 @@
Log.d(kTag, "onError: $errorMsg")
}
})
+ deviceViewModel.obtainOtherDeviceListByPage()
}
private val callback = Handler.Callback {
@@ -115,66 +140,96 @@
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
override fun onAddDeviceClick() {
- if (DeserializeModel.isLogin()) {
- requireContext().navigatePageTo()
- } else {
- requireContext().navigatePageTo()
- }
+ requireContext().navigatePageTo()
}
override fun onItemClick(position: Int) {
// 需要根据设备类型显示不同的页面
- if (DeserializeModel.isLogin()) {
- val deviceModel = dataBeans[position]
- val selectedCategory = deviceModel.selectCategory()
- Log.d(kTag, "设备类型: $selectedCategory")
- when {
- selectedCategory.contains("rs") -> {
- //热水器
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("yyj") -> {
- //油烟机
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("bgl") -> {
- //壁挂炉
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("rq") -> {
- //燃气灶
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("pc") -> {
- //排插
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("cz") -> {
- //插座
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("wg2") -> {
- //网关
- requireContext().navigatePageTo(
- deviceModel.devId
- )
- }
- selectedCategory.contains("0204") -> {
- //人体传感器
- requireContext().navigatePageTo()
- }
+ val deviceModel = dataBeans[position]
+ val selectedCategory = deviceModel.selectCategory()
+ Log.d(kTag, "设备类型: $selectedCategory")
+ when (selectedCategory) {
+ "rs" -> {
+ //热水器
+ requireContext().navigatePageTo(deviceModel.devId)
}
- } else {
- requireContext().navigatePageTo()
+ "yyj" -> {
+ //油烟机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "bgl" -> {
+ //壁挂炉
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "rq" -> {
+ //燃气灶
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "pc" -> {
+ //排插
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "cz" -> {
+ //插座
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "wg2" -> {
+ //网关
+ requireContext().navigatePageTo(
+ deviceModel.devId
+ )
+ }
+ //TODO 人体传感器设备类型待确认
+ "0204" -> {
+ //人体传感器
+ requireContext().navigatePageTo()
+ }
+ "wsdcg" -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
+ "ywbj" -> {
+ //火灾报警器
+ requireContext().navigatePageTo()
+ }
+ "rqbj" -> {
+ //燃气报警器
+ requireContext().navigatePageTo()
+ }
+ "cobj" -> {
+ //一氧化碳报警器
+ requireContext().navigatePageTo()
+ }
+ "yinsj" -> {
+ //即热式台式饮水机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
override fun onButtonClick(position: Int) {
- if (DeserializeModel.isLogin()) {
- moreOperate(position)
- } else {
- requireContext().navigatePageTo()
- }
+ moreOperate(position)
+ }
+ })
+ }
+ } else if (it.what == 2022112301) {
+ if (isRefresh) {
+ otherDeviceAdapter.notifyDataSetChanged()
+ } else {
+ otherDeviceAdapter = OtherDeviceAdapter(requireContext(), dataModes)
+ otherDeviceRecyclerView.adapter = otherDeviceAdapter
+ otherDeviceAdapter.setOnItemClickListener(object :
+ OtherDeviceAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ requireContext().navigatePageTo(dataModes[position].id)
}
})
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index 58f9e46..fe1e87d 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -4,17 +4,20 @@
import android.graphics.Typeface
import android.os.Handler
import android.util.Log
+import androidx.lifecycle.ViewModelProvider
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.adapter.OtherDeviceAdapter
import com.casic.br.adapter.RecommendAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.selectCategory
+import com.casic.br.model.OtherDeviceListModel
import com.casic.br.model.RecommendModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
-import com.casic.br.view.LoginActivity
import com.casic.br.view.device.*
+import com.casic.br.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.WeakReferenceHandler
@@ -34,7 +37,10 @@
private val kTag = "DevicePageFragment"
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private lateinit var otherDeviceAdapter: OtherDeviceAdapter
+ private lateinit var deviceViewModel: DeviceViewModel
private var dataBeans: MutableList = ArrayList()
+ private var dataModes: MutableList = ArrayList()
private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -47,6 +53,23 @@
override fun initData() {
weakReferenceHandler = WeakReferenceHandler(callback)
+ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java]
+ deviceViewModel.listModel.observe(this, {
+ if (it.code == 200) {
+ val deviceBeans = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataModes.clear()
+ dataModes = deviceBeans
+ isRefresh = false
+ }
+ else -> {
+ dataModes = deviceBeans
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022112301)
+ }
+ })
//TODO 热门推荐
val imageArray = arrayOf(
@@ -82,6 +105,7 @@
override fun onResume() {
super.onResume()
+ isRefresh = true
TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
@@ -103,6 +127,7 @@
Log.d(kTag, "onError: $errorMsg")
}
})
+ deviceViewModel.obtainOtherDeviceListByPage()
}
private val callback = Handler.Callback {
@@ -115,66 +140,96 @@
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
override fun onAddDeviceClick() {
- if (DeserializeModel.isLogin()) {
- requireContext().navigatePageTo()
- } else {
- requireContext().navigatePageTo()
- }
+ requireContext().navigatePageTo()
}
override fun onItemClick(position: Int) {
// 需要根据设备类型显示不同的页面
- if (DeserializeModel.isLogin()) {
- val deviceModel = dataBeans[position]
- val selectedCategory = deviceModel.selectCategory()
- Log.d(kTag, "设备类型: $selectedCategory")
- when {
- selectedCategory.contains("rs") -> {
- //热水器
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("yyj") -> {
- //油烟机
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("bgl") -> {
- //壁挂炉
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("rq") -> {
- //燃气灶
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("pc") -> {
- //排插
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("cz") -> {
- //插座
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("wg2") -> {
- //网关
- requireContext().navigatePageTo(
- deviceModel.devId
- )
- }
- selectedCategory.contains("0204") -> {
- //人体传感器
- requireContext().navigatePageTo()
- }
+ val deviceModel = dataBeans[position]
+ val selectedCategory = deviceModel.selectCategory()
+ Log.d(kTag, "设备类型: $selectedCategory")
+ when (selectedCategory) {
+ "rs" -> {
+ //热水器
+ requireContext().navigatePageTo(deviceModel.devId)
}
- } else {
- requireContext().navigatePageTo()
+ "yyj" -> {
+ //油烟机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "bgl" -> {
+ //壁挂炉
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "rq" -> {
+ //燃气灶
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "pc" -> {
+ //排插
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "cz" -> {
+ //插座
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "wg2" -> {
+ //网关
+ requireContext().navigatePageTo(
+ deviceModel.devId
+ )
+ }
+ //TODO 人体传感器设备类型待确认
+ "0204" -> {
+ //人体传感器
+ requireContext().navigatePageTo()
+ }
+ "wsdcg" -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
+ "ywbj" -> {
+ //火灾报警器
+ requireContext().navigatePageTo()
+ }
+ "rqbj" -> {
+ //燃气报警器
+ requireContext().navigatePageTo()
+ }
+ "cobj" -> {
+ //一氧化碳报警器
+ requireContext().navigatePageTo()
+ }
+ "yinsj" -> {
+ //即热式台式饮水机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
override fun onButtonClick(position: Int) {
- if (DeserializeModel.isLogin()) {
- moreOperate(position)
- } else {
- requireContext().navigatePageTo()
- }
+ moreOperate(position)
+ }
+ })
+ }
+ } else if (it.what == 2022112301) {
+ if (isRefresh) {
+ otherDeviceAdapter.notifyDataSetChanged()
+ } else {
+ otherDeviceAdapter = OtherDeviceAdapter(requireContext(), dataModes)
+ otherDeviceRecyclerView.adapter = otherDeviceAdapter
+ otherDeviceAdapter.setOnItemClickListener(object :
+ OtherDeviceAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ requireContext().navigatePageTo(dataModes[position].id)
}
})
}
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 4b68f47..caaae87 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -105,7 +105,7 @@
}
})
- //TODO 精选好物
+ //TODO 现为模拟数据,待后期调整
val imageArray = arrayOf(
"https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp",
"https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp",
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index 58f9e46..fe1e87d 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -4,17 +4,20 @@
import android.graphics.Typeface
import android.os.Handler
import android.util.Log
+import androidx.lifecycle.ViewModelProvider
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.adapter.OtherDeviceAdapter
import com.casic.br.adapter.RecommendAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.selectCategory
+import com.casic.br.model.OtherDeviceListModel
import com.casic.br.model.RecommendModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
-import com.casic.br.view.LoginActivity
import com.casic.br.view.device.*
+import com.casic.br.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.WeakReferenceHandler
@@ -34,7 +37,10 @@
private val kTag = "DevicePageFragment"
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private lateinit var otherDeviceAdapter: OtherDeviceAdapter
+ private lateinit var deviceViewModel: DeviceViewModel
private var dataBeans: MutableList = ArrayList()
+ private var dataModes: MutableList = ArrayList()
private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -47,6 +53,23 @@
override fun initData() {
weakReferenceHandler = WeakReferenceHandler(callback)
+ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java]
+ deviceViewModel.listModel.observe(this, {
+ if (it.code == 200) {
+ val deviceBeans = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataModes.clear()
+ dataModes = deviceBeans
+ isRefresh = false
+ }
+ else -> {
+ dataModes = deviceBeans
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022112301)
+ }
+ })
//TODO 热门推荐
val imageArray = arrayOf(
@@ -82,6 +105,7 @@
override fun onResume() {
super.onResume()
+ isRefresh = true
TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
@@ -103,6 +127,7 @@
Log.d(kTag, "onError: $errorMsg")
}
})
+ deviceViewModel.obtainOtherDeviceListByPage()
}
private val callback = Handler.Callback {
@@ -115,66 +140,96 @@
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
override fun onAddDeviceClick() {
- if (DeserializeModel.isLogin()) {
- requireContext().navigatePageTo()
- } else {
- requireContext().navigatePageTo()
- }
+ requireContext().navigatePageTo()
}
override fun onItemClick(position: Int) {
// 需要根据设备类型显示不同的页面
- if (DeserializeModel.isLogin()) {
- val deviceModel = dataBeans[position]
- val selectedCategory = deviceModel.selectCategory()
- Log.d(kTag, "设备类型: $selectedCategory")
- when {
- selectedCategory.contains("rs") -> {
- //热水器
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("yyj") -> {
- //油烟机
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("bgl") -> {
- //壁挂炉
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("rq") -> {
- //燃气灶
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("pc") -> {
- //排插
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("cz") -> {
- //插座
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("wg2") -> {
- //网关
- requireContext().navigatePageTo(
- deviceModel.devId
- )
- }
- selectedCategory.contains("0204") -> {
- //人体传感器
- requireContext().navigatePageTo()
- }
+ val deviceModel = dataBeans[position]
+ val selectedCategory = deviceModel.selectCategory()
+ Log.d(kTag, "设备类型: $selectedCategory")
+ when (selectedCategory) {
+ "rs" -> {
+ //热水器
+ requireContext().navigatePageTo(deviceModel.devId)
}
- } else {
- requireContext().navigatePageTo()
+ "yyj" -> {
+ //油烟机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "bgl" -> {
+ //壁挂炉
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "rq" -> {
+ //燃气灶
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "pc" -> {
+ //排插
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "cz" -> {
+ //插座
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "wg2" -> {
+ //网关
+ requireContext().navigatePageTo(
+ deviceModel.devId
+ )
+ }
+ //TODO 人体传感器设备类型待确认
+ "0204" -> {
+ //人体传感器
+ requireContext().navigatePageTo()
+ }
+ "wsdcg" -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
+ "ywbj" -> {
+ //火灾报警器
+ requireContext().navigatePageTo()
+ }
+ "rqbj" -> {
+ //燃气报警器
+ requireContext().navigatePageTo()
+ }
+ "cobj" -> {
+ //一氧化碳报警器
+ requireContext().navigatePageTo()
+ }
+ "yinsj" -> {
+ //即热式台式饮水机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
override fun onButtonClick(position: Int) {
- if (DeserializeModel.isLogin()) {
- moreOperate(position)
- } else {
- requireContext().navigatePageTo()
- }
+ moreOperate(position)
+ }
+ })
+ }
+ } else if (it.what == 2022112301) {
+ if (isRefresh) {
+ otherDeviceAdapter.notifyDataSetChanged()
+ } else {
+ otherDeviceAdapter = OtherDeviceAdapter(requireContext(), dataModes)
+ otherDeviceRecyclerView.adapter = otherDeviceAdapter
+ otherDeviceAdapter.setOnItemClickListener(object :
+ OtherDeviceAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ requireContext().navigatePageTo(dataModes[position].id)
}
})
}
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 4b68f47..caaae87 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -105,7 +105,7 @@
}
})
- //TODO 精选好物
+ //TODO 现为模拟数据,待后期调整
val imageArray = arrayOf(
"https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp",
"https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp",
diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
index 1ec1301..0991ac7 100644
--- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
@@ -87,7 +87,7 @@
}
2022092903 -> {
val deviceBean = message.obj as DeviceBean
- deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate(false)}天")
ipAddressView.text = deviceBean.ip
paramObject.put("usageTime", deviceUsedTimeView.text)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index 58f9e46..fe1e87d 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -4,17 +4,20 @@
import android.graphics.Typeface
import android.os.Handler
import android.util.Log
+import androidx.lifecycle.ViewModelProvider
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.adapter.OtherDeviceAdapter
import com.casic.br.adapter.RecommendAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.selectCategory
+import com.casic.br.model.OtherDeviceListModel
import com.casic.br.model.RecommendModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
-import com.casic.br.view.LoginActivity
import com.casic.br.view.device.*
+import com.casic.br.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.WeakReferenceHandler
@@ -34,7 +37,10 @@
private val kTag = "DevicePageFragment"
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private lateinit var otherDeviceAdapter: OtherDeviceAdapter
+ private lateinit var deviceViewModel: DeviceViewModel
private var dataBeans: MutableList = ArrayList()
+ private var dataModes: MutableList = ArrayList()
private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -47,6 +53,23 @@
override fun initData() {
weakReferenceHandler = WeakReferenceHandler(callback)
+ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java]
+ deviceViewModel.listModel.observe(this, {
+ if (it.code == 200) {
+ val deviceBeans = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataModes.clear()
+ dataModes = deviceBeans
+ isRefresh = false
+ }
+ else -> {
+ dataModes = deviceBeans
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022112301)
+ }
+ })
//TODO 热门推荐
val imageArray = arrayOf(
@@ -82,6 +105,7 @@
override fun onResume() {
super.onResume()
+ isRefresh = true
TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
@@ -103,6 +127,7 @@
Log.d(kTag, "onError: $errorMsg")
}
})
+ deviceViewModel.obtainOtherDeviceListByPage()
}
private val callback = Handler.Callback {
@@ -115,66 +140,96 @@
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
override fun onAddDeviceClick() {
- if (DeserializeModel.isLogin()) {
- requireContext().navigatePageTo()
- } else {
- requireContext().navigatePageTo()
- }
+ requireContext().navigatePageTo()
}
override fun onItemClick(position: Int) {
// 需要根据设备类型显示不同的页面
- if (DeserializeModel.isLogin()) {
- val deviceModel = dataBeans[position]
- val selectedCategory = deviceModel.selectCategory()
- Log.d(kTag, "设备类型: $selectedCategory")
- when {
- selectedCategory.contains("rs") -> {
- //热水器
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("yyj") -> {
- //油烟机
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("bgl") -> {
- //壁挂炉
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("rq") -> {
- //燃气灶
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("pc") -> {
- //排插
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("cz") -> {
- //插座
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("wg2") -> {
- //网关
- requireContext().navigatePageTo(
- deviceModel.devId
- )
- }
- selectedCategory.contains("0204") -> {
- //人体传感器
- requireContext().navigatePageTo()
- }
+ val deviceModel = dataBeans[position]
+ val selectedCategory = deviceModel.selectCategory()
+ Log.d(kTag, "设备类型: $selectedCategory")
+ when (selectedCategory) {
+ "rs" -> {
+ //热水器
+ requireContext().navigatePageTo(deviceModel.devId)
}
- } else {
- requireContext().navigatePageTo()
+ "yyj" -> {
+ //油烟机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "bgl" -> {
+ //壁挂炉
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "rq" -> {
+ //燃气灶
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "pc" -> {
+ //排插
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "cz" -> {
+ //插座
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "wg2" -> {
+ //网关
+ requireContext().navigatePageTo(
+ deviceModel.devId
+ )
+ }
+ //TODO 人体传感器设备类型待确认
+ "0204" -> {
+ //人体传感器
+ requireContext().navigatePageTo()
+ }
+ "wsdcg" -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
+ "ywbj" -> {
+ //火灾报警器
+ requireContext().navigatePageTo()
+ }
+ "rqbj" -> {
+ //燃气报警器
+ requireContext().navigatePageTo()
+ }
+ "cobj" -> {
+ //一氧化碳报警器
+ requireContext().navigatePageTo()
+ }
+ "yinsj" -> {
+ //即热式台式饮水机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
override fun onButtonClick(position: Int) {
- if (DeserializeModel.isLogin()) {
- moreOperate(position)
- } else {
- requireContext().navigatePageTo()
- }
+ moreOperate(position)
+ }
+ })
+ }
+ } else if (it.what == 2022112301) {
+ if (isRefresh) {
+ otherDeviceAdapter.notifyDataSetChanged()
+ } else {
+ otherDeviceAdapter = OtherDeviceAdapter(requireContext(), dataModes)
+ otherDeviceRecyclerView.adapter = otherDeviceAdapter
+ otherDeviceAdapter.setOnItemClickListener(object :
+ OtherDeviceAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ requireContext().navigatePageTo(dataModes[position].id)
}
})
}
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 4b68f47..caaae87 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -105,7 +105,7 @@
}
})
- //TODO 精选好物
+ //TODO 现为模拟数据,待后期调整
val imageArray = arrayOf(
"https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp",
"https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp",
diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
index 1ec1301..0991ac7 100644
--- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
@@ -87,7 +87,7 @@
}
2022092903 -> {
val deviceBean = message.obj as DeviceBean
- deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate(false)}天")
ipAddressView.text = deviceBean.ip
paramObject.put("usageTime", deviceUsedTimeView.text)
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
index 4b983f3..5f16326 100644
--- a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -125,7 +125,7 @@
}
2022092803 -> {
val deviceBean = message.obj as DeviceBean
- deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate(false)}天")
ipAddressView.text = deviceBean.ip
paramObject.put("usageTime", deviceUsedTimeView.text)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index 58f9e46..fe1e87d 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -4,17 +4,20 @@
import android.graphics.Typeface
import android.os.Handler
import android.util.Log
+import androidx.lifecycle.ViewModelProvider
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.adapter.OtherDeviceAdapter
import com.casic.br.adapter.RecommendAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.selectCategory
+import com.casic.br.model.OtherDeviceListModel
import com.casic.br.model.RecommendModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
-import com.casic.br.view.LoginActivity
import com.casic.br.view.device.*
+import com.casic.br.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.WeakReferenceHandler
@@ -34,7 +37,10 @@
private val kTag = "DevicePageFragment"
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private lateinit var otherDeviceAdapter: OtherDeviceAdapter
+ private lateinit var deviceViewModel: DeviceViewModel
private var dataBeans: MutableList = ArrayList()
+ private var dataModes: MutableList = ArrayList()
private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -47,6 +53,23 @@
override fun initData() {
weakReferenceHandler = WeakReferenceHandler(callback)
+ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java]
+ deviceViewModel.listModel.observe(this, {
+ if (it.code == 200) {
+ val deviceBeans = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataModes.clear()
+ dataModes = deviceBeans
+ isRefresh = false
+ }
+ else -> {
+ dataModes = deviceBeans
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022112301)
+ }
+ })
//TODO 热门推荐
val imageArray = arrayOf(
@@ -82,6 +105,7 @@
override fun onResume() {
super.onResume()
+ isRefresh = true
TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
@@ -103,6 +127,7 @@
Log.d(kTag, "onError: $errorMsg")
}
})
+ deviceViewModel.obtainOtherDeviceListByPage()
}
private val callback = Handler.Callback {
@@ -115,66 +140,96 @@
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
override fun onAddDeviceClick() {
- if (DeserializeModel.isLogin()) {
- requireContext().navigatePageTo()
- } else {
- requireContext().navigatePageTo()
- }
+ requireContext().navigatePageTo()
}
override fun onItemClick(position: Int) {
// 需要根据设备类型显示不同的页面
- if (DeserializeModel.isLogin()) {
- val deviceModel = dataBeans[position]
- val selectedCategory = deviceModel.selectCategory()
- Log.d(kTag, "设备类型: $selectedCategory")
- when {
- selectedCategory.contains("rs") -> {
- //热水器
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("yyj") -> {
- //油烟机
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("bgl") -> {
- //壁挂炉
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("rq") -> {
- //燃气灶
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("pc") -> {
- //排插
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("cz") -> {
- //插座
- requireContext().navigatePageTo(deviceModel.devId)
- }
- selectedCategory.contains("wg2") -> {
- //网关
- requireContext().navigatePageTo(
- deviceModel.devId
- )
- }
- selectedCategory.contains("0204") -> {
- //人体传感器
- requireContext().navigatePageTo()
- }
+ val deviceModel = dataBeans[position]
+ val selectedCategory = deviceModel.selectCategory()
+ Log.d(kTag, "设备类型: $selectedCategory")
+ when (selectedCategory) {
+ "rs" -> {
+ //热水器
+ requireContext().navigatePageTo(deviceModel.devId)
}
- } else {
- requireContext().navigatePageTo()
+ "yyj" -> {
+ //油烟机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "bgl" -> {
+ //壁挂炉
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "rq" -> {
+ //燃气灶
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "pc" -> {
+ //排插
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "cz" -> {
+ //插座
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "wg2" -> {
+ //网关
+ requireContext().navigatePageTo(
+ deviceModel.devId
+ )
+ }
+ //TODO 人体传感器设备类型待确认
+ "0204" -> {
+ //人体传感器
+ requireContext().navigatePageTo()
+ }
+ "wsdcg" -> {
+ //温湿度传感器
+ requireContext().navigatePageTo()
+ }
+ "ywbj" -> {
+ //火灾报警器
+ requireContext().navigatePageTo()
+ }
+ "rqbj" -> {
+ //燃气报警器
+ requireContext().navigatePageTo()
+ }
+ "cobj" -> {
+ //一氧化碳报警器
+ requireContext().navigatePageTo()
+ }
+ "yinsj" -> {
+ //即热式台式饮水机
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "kj" -> {
+ //空气净化器
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
+ "sd" -> {
+ //智能扫地机器人
+ requireContext().navigatePageTo(deviceModel.devId)
+ }
}
}
override fun onButtonClick(position: Int) {
- if (DeserializeModel.isLogin()) {
- moreOperate(position)
- } else {
- requireContext().navigatePageTo()
- }
+ moreOperate(position)
+ }
+ })
+ }
+ } else if (it.what == 2022112301) {
+ if (isRefresh) {
+ otherDeviceAdapter.notifyDataSetChanged()
+ } else {
+ otherDeviceAdapter = OtherDeviceAdapter(requireContext(), dataModes)
+ otherDeviceRecyclerView.adapter = otherDeviceAdapter
+ otherDeviceAdapter.setOnItemClickListener(object :
+ OtherDeviceAdapter.OnItemClickListener {
+ override fun onItemClick(position: Int) {
+ requireContext().navigatePageTo(dataModes[position].id)
}
})
}
diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
index 4b68f47..caaae87 100644
--- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt
@@ -105,7 +105,7 @@
}
})
- //TODO 精选好物
+ //TODO 现为模拟数据,待后期调整
val imageArray = arrayOf(
"https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp",
"https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp",
diff --git a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
index 1ec1301..0991ac7 100644
--- a/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/cooker/StatusPageFragment.kt
@@ -87,7 +87,7 @@
}
2022092903 -> {
val deviceBean = message.obj as DeviceBean
- deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate(false)}天")
ipAddressView.text = deviceBean.ip
paramObject.put("usageTime", deviceUsedTimeView.text)
diff --git a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
index 4b983f3..5f16326 100644
--- a/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/fireplace/StatusPageFragment.kt
@@ -125,7 +125,7 @@
}
2022092803 -> {
val deviceBean = message.obj as DeviceBean
- deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate()}天")
+ deviceUsedTimeView.text = String.format("${deviceBean.time.toString().diffDate(false)}天")
ipAddressView.text = deviceBean.ip
paramObject.put("usageTime", deviceUsedTimeView.text)
diff --git a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
index cad6d98..865e6a7 100644
--- a/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/rangehood/ControlPageFragment.kt
@@ -40,24 +40,24 @@
override fun initEvent() {
//开关机
turnOffRadioButton.setOnClickListener {
- CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(!isDeviceWorking))
- }
-
- lowSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ if (turnOffRadioButton.isChecked) {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(true))
+ } else {
+ CommandManager.sendTuyaDp(deviceInstance, "1".createCommand(false))
}
}
- highSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
- }
- }
-
- maxSpeedRadioButton.setOnCheckedChangeListener { _, isChecked ->
- if (isChecked) {
- CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ speedRadioGroup.setOnCheckedChangeListener { _, checkedId ->
+ when (checkedId) {
+ R.id.lowSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("low"))
+ }
+ R.id.mediumSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("high"))
+ }
+ R.id.highSpeedRadioButton -> {
+ CommandManager.sendTuyaDp(deviceInstance, "10".createCommand("strong"))
+ }
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6abc67b..26fd5a9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,7 @@
+
@@ -77,6 +78,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ private val context: Context, private val dataRows: MutableList
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
@@ -41,8 +40,8 @@
params.setMargins(0, 3f.dp2px(context), 0, 0)
holder.imageView.requestLayout()
}
- holder.imageView.layoutParams.width = 80f.dp2px(context)
- holder.imageView.layoutParams.height = 80f.dp2px(context)
+ holder.imageView.layoutParams.width = 40f.dp2px(context)
+ holder.imageView.layoutParams.height = 40f.dp2px(context)
holder.tempLayout.visibility = View.GONE
holder.imageView.setOnClickListener { //添加图片
@@ -58,12 +57,11 @@
.into(holder.imageView)
holder.deviceModelView.text = rowsModel.name
holder.deviceUsedTimeView.text = String.format(
- "已使用${rowsModel.time.toString().diffDate()}天"
+ "已使用${rowsModel.time.toString().diffDate(false)}天"
)
holder.rootView.setOnClickListener {
clickListener?.onItemClick(position)
}
- // 长按监听
holder.moreOperateButton.setOnClickListener {
clickListener?.onButtonClick(position)
}
diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
index 535b3f3..d8ca8f7 100644
--- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt
@@ -10,6 +10,7 @@
import com.casic.br.model.FavoriteModel
/**
+ * TODO 现为模拟数据,待后期调整
* 猜你喜欢,九宫格Adapter
* */
class FavoriteAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
index 8ff089f..274005d 100644
--- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt
@@ -11,6 +11,7 @@
import com.casic.br.model.FeaturedGoodsModel
/**
+ * TODO 现为模拟数据,待后期调整
* 精选好物,九宫格Adapter
* */
class FeaturedGoodsAdapter(
diff --git a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
index 3ca02e4..0e20ec2 100644
--- a/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/IconTextGridAdapter.kt
@@ -13,9 +13,7 @@
* 图片在上,文字在下,九宫格Adapter
* */
class IconTextGridAdapter(
- private val context: Context,
- private val icons: IntArray,
- private val titles: Array
+ context: Context, private val icons: IntArray, private val titles: Array
) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
diff --git a/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
new file mode 100644
index 0000000..183396a
--- /dev/null
+++ b/app/src/main/java/com/casic/br/adapter/OtherDeviceAdapter.kt
@@ -0,0 +1,70 @@
+package com.casic.br.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.bumptech.glide.Glide
+import com.bumptech.glide.request.RequestOptions
+import com.casic.br.R
+import com.casic.br.extensions.combineImagePath
+import com.casic.br.extensions.diffDate
+import com.casic.br.model.OtherDeviceListModel
+
+/**
+ * 汉威报警器Adapter
+ * */
+class OtherDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ val rowsModel = dataRows[position]
+ holder.deviceNameView.text = rowsModel.deviceName
+ Glide.with(context)
+ .load(rowsModel.picUri.combineImagePath())
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
+ holder.deviceModelView.text = rowsModel.productCode
+ holder.deviceUsedTimeView.text = String.format(
+ "已使用${rowsModel.createTime.toString().diffDate(true)}天"
+ )
+ holder.rootView.setOnClickListener {
+ clickListener?.onItemClick(position)
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows.size
+
+ private var clickListener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onItemClick(position: Int)
+ }
+
+ fun setOnItemClickListener(clickListener: OnItemClickListener?) {
+ this.clickListener = clickListener
+ }
+
+ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
+ val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
+ val imageView: ImageView = itemView.findViewById(R.id.imageView)
+ val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
+ val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/String.kt b/app/src/main/java/com/casic/br/extensions/String.kt
index 38212ce..b63113d 100644
--- a/app/src/main/java/com/casic/br/extensions/String.kt
+++ b/app/src/main/java/com/casic/br/extensions/String.kt
@@ -16,6 +16,7 @@
import top.zibin.luban.OnCompressListener
import java.io.File
import java.text.ParseException
+import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.abs
@@ -56,17 +57,22 @@
/**
* 时间差-天
* */
-fun String.diffDate(): Int {
+fun String.diffDate(needFormat: Boolean): Int {
if (this.isBlank()) {
return 0
}
- try {
- val diff = abs(System.currentTimeMillis() - this.toLong() * 1000L)
- return (diff / (86400000)).toInt()
- } catch (e: ParseException) {
- e.printStackTrace()
- }
- return 0
+ val diff = if (needFormat) {
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
+ val date = simpleDateFormat.parse(this)!!
+ abs(System.currentTimeMillis() - date.time)
+ } else {
+ try {
+ abs(System.currentTimeMillis() - this.toLong() * 1000L)
+ } catch (e: ParseException) {
+ e.printStackTrace()
+ }
+ } as Long
+ return (diff / (86400000)).toInt()
}
fun String.separateResponseCode(): Int {
@@ -121,6 +127,13 @@
"pc" -> "Wi-Fi智能插排"
"cz" -> "Wi-Fi智能插座"
"wg2" -> "智能网关"
+ "wsdcg" -> "温湿度传感器"
+ "ywbj" -> "火灾报警器"
+ "rqbj" -> "燃气报警器"
+ "cobj" -> "一氧化碳报警器"
+ "yinsj" -> "即热式台式饮水机"
+ "kj" -> "空气净化器"
+ "sd" -> "智能扫地机器人"
else -> "其他"
}
}
@@ -142,4 +155,18 @@
e.printStackTrace()
}
return R.drawable.ic_battery_0
+}
+
+fun String.convertValue(deciPoint: Int): Double {
+ if (this.isBlank()) {
+ return 0.0
+ }
+ when (deciPoint) {
+ 0 -> return this.toDouble()
+ 1 -> return (this.toDouble()) / 10
+ 2 -> return (this.toDouble()) / 100
+ 3 -> return (this.toDouble()) / 1000
+ 4 -> return (this.toDouble()) / 10000
+ }
+ return this.toDouble()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/View.kt b/app/src/main/java/com/casic/br/extensions/View.kt
new file mode 100644
index 0000000..d6723b6
--- /dev/null
+++ b/app/src/main/java/com/casic/br/extensions/View.kt
@@ -0,0 +1,20 @@
+package com.casic.br.extensions
+
+import android.view.View
+import com.casic.br.utils.LocaleConstant
+
+fun View.disableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_DISABLE
+ this.isEnabled = false
+ view.forEach {
+ it?.isEnabled = false
+ }
+}
+
+fun View.enableView(vararg view: View?) {
+ this.alpha = LocaleConstant.VIEW_ENABLE
+ this.isEnabled = true
+ view.forEach {
+ it?.isEnabled = true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
index 1bb5d99..0625a15 100644
--- a/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
+++ b/app/src/main/java/com/casic/br/extensions/ViewGroup.kt
@@ -4,6 +4,7 @@
import android.view.ViewGroup
import com.casic.br.utils.LocaleConstant
+//TODO 后期整合到View扩展函数去
fun ViewGroup.disableLayout(vararg view: View) {
this.alpha = LocaleConstant.VIEW_DISABLE
this.isEnabled = false
@@ -19,11 +20,3 @@
it.isEnabled = true
}
}
-
-fun ViewGroup.disableView() {
- this.isEnabled = false
-}
-
-fun ViewGroup.enableView() {
- this.isEnabled = true
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
index 58f9e46..fe1e87d 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -4,17 +4,20 @@
import android.graphics.Typeface
import android.os.Handler
import android.util.Log
+import androidx.lifecycle.ViewModelProvider
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
+import com.casic.br.adapter.OtherDeviceAdapter
import com.casic.br.adapter.RecommendAdapter
import com.casic.br.extensions.initLayoutImmersionBar
import com.casic.br.extensions.selectCategory
+import com.casic.br.model.OtherDeviceListModel
import com.casic.br.model.RecommendModel
import com.casic.br.utils.DeserializeModel
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
-import com.casic.br.view.LoginActivity
import com.casic.br.view.device.*
+import com.casic.br.vm.DeviceViewModel
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.utils.WeakReferenceHandler
@@ -34,7 +37,10 @@
private val kTag = "DevicePageFragment"
private lateinit var weakReferenceHandler: WeakReferenceHandler
private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private lateinit var otherDeviceAdapter: OtherDeviceAdapter
+ private lateinit var deviceViewModel: DeviceViewModel
private var dataBeans: MutableList = ArrayList()
+ private var dataModes: MutableList = ArrayList()
private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -47,6 +53,23 @@
override fun initData() {
weakReferenceHandler = WeakReferenceHandler(callback)
+ deviceViewModel = ViewModelProvider(this)[DeviceViewModel::class.java]
+ deviceViewModel.listModel.observe(this, {
+ if (it.code == 200) {
+ val deviceBeans = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataModes.clear()
+ dataModes = deviceBeans
+ isRefresh = false
+ }
+ else -> {
+ dataModes = deviceBeans
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022112301)
+ }
+ })
//TODO 热门推荐
val imageArray = arrayOf(
@@ -82,6 +105,7 @@
override fun onResume() {
super.onResume()
+ isRefresh = true
TuyaHomeSdk.newHomeInstance(DeserializeModel.getHomeId())
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
@@ -103,6 +127,7 @@
Log.d(kTag, "onError: $errorMsg")
}
})
+ deviceViewModel.obtainOtherDeviceListByPage()
}
private val callback = Handler.Callback {
@@ -115,66 +140,96 @@
addedDeviceAdapter.setOnItemClickListener(object :
AddedDeviceAdapter.OnItemClickListener {
override fun onAddDeviceClick() {
- if (DeserializeModel.isLogin()) {
- requireContext().navigatePageTo()
- } else {
- requireContext().navigatePageTo()
- }
+ requireContext().navigatePageTo