diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 838bde6..d8035fa 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -1,7 +1,28 @@
package com.casic.br.view.device
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
/**
* 油烟机
* */
-class RangeHoodActivity {
+class RangeHoodActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_range_hood
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 838bde6..d8035fa 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -1,7 +1,28 @@
package com.casic.br.view.device
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
/**
* 油烟机
* */
-class RangeHoodActivity {
+class RangeHoodActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_range_hood
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 3e21b07..423ef45 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -13,6 +13,7 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
import kotlinx.android.synthetic.main.activity_water_heater.*
+import kotlinx.android.synthetic.main.include_device_title.*
import java.util.*
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 838bde6..d8035fa 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -1,7 +1,28 @@
package com.casic.br.view.device
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
/**
* 油烟机
* */
-class RangeHoodActivity {
+class RangeHoodActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_range_hood
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 3e21b07..423ef45 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -13,6 +13,7 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
import kotlinx.android.synthetic.main.activity_water_heater.*
+import kotlinx.android.synthetic.main.include_device_title.*
import java.util.*
diff --git a/app/src/main/res/layout/activity_range_hood.xml b/app/src/main/res/layout/activity_range_hood.xml
new file mode 100644
index 0000000..811651f
--- /dev/null
+++ b/app/src/main/res/layout/activity_range_hood.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 838bde6..d8035fa 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -1,7 +1,28 @@
package com.casic.br.view.device
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
/**
* 油烟机
* */
-class RangeHoodActivity {
+class RangeHoodActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_range_hood
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 3e21b07..423ef45 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -13,6 +13,7 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
import kotlinx.android.synthetic.main.activity_water_heater.*
+import kotlinx.android.synthetic.main.include_device_title.*
import java.util.*
diff --git a/app/src/main/res/layout/activity_range_hood.xml b/app/src/main/res/layout/activity_range_hood.xml
new file mode 100644
index 0000000..811651f
--- /dev/null
+++ b/app/src/main/res/layout/activity_range_hood.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml
index 5a5f36f..d2de0ad 100644
--- a/app/src/main/res/layout/activity_water_heater.xml
+++ b/app/src/main/res/layout/activity_water_heater.xml
@@ -7,36 +7,7 @@
android:background="@mipmap/common_bkg"
android:orientation="vertical">
-
-
-
-
-
-
-
-
+
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 838bde6..d8035fa 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -1,7 +1,28 @@
package com.casic.br.view.device
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
/**
* 油烟机
* */
-class RangeHoodActivity {
+class RangeHoodActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_range_hood
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 3e21b07..423ef45 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -13,6 +13,7 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
import kotlinx.android.synthetic.main.activity_water_heater.*
+import kotlinx.android.synthetic.main.include_device_title.*
import java.util.*
diff --git a/app/src/main/res/layout/activity_range_hood.xml b/app/src/main/res/layout/activity_range_hood.xml
new file mode 100644
index 0000000..811651f
--- /dev/null
+++ b/app/src/main/res/layout/activity_range_hood.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml
index 5a5f36f..d2de0ad 100644
--- a/app/src/main/res/layout/activity_water_heater.xml
+++ b/app/src/main/res/layout/activity_water_heater.xml
@@ -7,36 +7,7 @@
android:background="@mipmap/common_bkg"
android:orientation="vertical">
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba3523a..c8e1fb2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -53,6 +53,7 @@
+
diff --git a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
index 4be4e05..d4bbc7c 100644
--- a/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
+++ b/app/src/main/java/com/casic/br/adapter/AddedDeviceAdapter.kt
@@ -1,6 +1,5 @@
package com.casic.br.adapter
-import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
@@ -10,28 +9,18 @@
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.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
-@SuppressLint("NotifyDataSetChanged")
-class AddedDeviceAdapter(private val context: Context) :
- RecyclerView.Adapter() {
+class AddedDeviceAdapter(
+ private val context: Context,
+ private val dataRows: MutableList
+) : RecyclerView.Adapter() {
private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
- private var dataRows: MutableList = ArrayList()
-
- fun setupDevice(devices: MutableList) {
- dataRows = devices
- notifyDataSetChanged()
- }
-
- fun deleteDevice(position: Int) {
- if (dataRows.isNotEmpty()) {
- dataRows.removeAt(position)
- notifyDataSetChanged()
- }
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
return ItemViewHolder(
@@ -59,6 +48,11 @@
}
} else {
holder.deviceNameView.text = dataRows[position].deviceName
+ Glide.with(context)
+ .load(dataRows[position].deviceImage)
+ .apply(RequestOptions.circleCropTransform())
+ .placeholder(R.mipmap.load_image_error)
+ .into(holder.imageView)
holder.deviceModelView.text = dataRows[position].deviceModel
holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
holder.rootView.setOnClickListener {
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 b9e32f4..3480d5b 100644
--- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
+++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt
@@ -1,6 +1,7 @@
package com.casic.br.fragment
import android.graphics.Typeface
+import android.os.Handler
import android.util.Log
import com.casic.br.R
import com.casic.br.adapter.AddedDeviceAdapter
@@ -11,13 +12,14 @@
import com.casic.br.utils.LocaleConstant
import com.casic.br.view.AddDeviceActivity
import com.casic.br.view.AllDeviceActivity
+import com.casic.br.view.device.CookerActivity
import com.casic.br.view.device.FireplaceActivity
import com.casic.br.view.device.RangeHoodActivity
import com.casic.br.view.device.WaterHeaterActivity
import com.pengxh.kt.lite.base.KotlinBaseFragment
import com.pengxh.kt.lite.extensions.navigatePageTo
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.SaveKeyValues
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
import com.tuya.smart.home.sdk.TuyaHomeSdk
import com.tuya.smart.home.sdk.bean.HomeBean
import com.tuya.smart.home.sdk.callback.ITuyaHomeResultCallback
@@ -30,6 +32,10 @@
class DevicePageFragment : KotlinBaseFragment() {
private val kTag = "DevicePageFragment"
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var addedDeviceAdapter: AddedDeviceAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var isRefresh = false
override fun initLayoutView(): Int = R.layout.fragment_device
@@ -40,44 +46,7 @@
}
override fun initData() {
- //TODO 模拟数据
- val deviceModels = ArrayList()
-
- val model1 = AddedDeviceModel()
- model1.deviceName = "万家乐热水器"
- model1.deviceModel = "D40-DM1"
- model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天"
- deviceModels.add(model1)
-
- val addedDeviceAdapter = AddedDeviceAdapter(requireContext())
- addedDeviceAdapter.setupDevice(deviceModels)
- deviceRecyclerView.adapter = addedDeviceAdapter
- addedDeviceAdapter.setOnItemClickListener(object :
- AddedDeviceAdapter.OnItemClickListener {
- override fun onAddDeviceClick() {
- requireContext().navigatePageTo()
- }
-
- override fun onItemClick(position: Int) {
- //TODO 需要根据设备类型显示不同的页面
- val deviceModel = deviceModels[position]
- when {
- deviceModel.deviceName.contains("热水器") -> {
- requireContext().navigatePageTo(deviceModel.deviceName)
- }
- deviceModel.deviceName.contains("油烟机") -> {
- requireContext().navigatePageTo()
- }
- deviceModel.deviceName.contains("壁挂炉") -> {
- requireContext().navigatePageTo()
- }
- }
- }
-
- override fun onButtonClick(position: Int) {
-
- }
- })
+ weakReferenceHandler = WeakReferenceHandler(callback)
//热门推荐
//TODO 模拟数据 只显示前三个设备
@@ -118,12 +87,77 @@
.getHomeDetail(object : ITuyaHomeResultCallback {
override fun onSuccess(bean: HomeBean) {
val deviceList: List = bean.deviceList
- Log.d(kTag, deviceList.toJson())
+ val deviceModels = ArrayList()
+ deviceList.forEach {
+ val model = AddedDeviceModel()
+ when (it.deviceCategory) {
+ "yyj" -> model.deviceName = "万家乐油烟机"
+ }
+ model.isOnline = it.isOnline
+ model.deviceImage = it.iconUrl
+ model.deviceModel = it.name
+ model.deviceType = it.deviceCategory
+ model.deviceUsedTime = "未知"
+ deviceModels.add(model)
+ }
+
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = deviceModels
+ isRefresh = false
+ }
+ else -> {
+ dataBeans = deviceModels
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2022091901)
}
override fun onError(errorCode: String, errorMsg: String) {
- // do something
+ Log.d(kTag, "onError: $errorMsg")
}
})
}
+
+ private val callback = Handler.Callback {
+ if (it.what == 2022091901) {
+ if (isRefresh) {
+ addedDeviceAdapter.notifyDataSetChanged()
+ } else {
+ addedDeviceAdapter = AddedDeviceAdapter(requireContext(), dataBeans)
+ deviceRecyclerView.adapter = addedDeviceAdapter
+ addedDeviceAdapter.setOnItemClickListener(object :
+ AddedDeviceAdapter.OnItemClickListener {
+ override fun onAddDeviceClick() {
+ requireContext().navigatePageTo()
+ }
+
+ override fun onItemClick(position: Int) {
+ // 需要根据设备类型显示不同的页面
+ val deviceModel = dataBeans[position]
+ when {
+ deviceModel.deviceName.contains("热水器") -> {
+ requireContext().navigatePageTo(deviceModel.deviceName)
+ }
+ deviceModel.deviceName.contains("油烟机") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("壁挂炉") -> {
+ requireContext().navigatePageTo()
+ }
+ deviceModel.deviceName.contains("燃气灶") -> {
+ requireContext().navigatePageTo()
+ }
+ }
+ }
+
+ override fun onButtonClick(position: Int) {
+
+ }
+ })
+ }
+ }
+ true
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
index 451a69a..d4a358b 100644
--- a/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
+++ b/app/src/main/java/com/casic/br/model/AddedDeviceModel.java
@@ -5,6 +5,7 @@
*/
public class AddedDeviceModel {
private String deviceName;
+ private boolean isOnline;
private String deviceImage;
private String deviceModel;
private String deviceType;
@@ -18,6 +19,14 @@
this.deviceName = deviceName;
}
+ public boolean isOnline() {
+ return isOnline;
+ }
+
+ public void setOnline(boolean online) {
+ isOnline = online;
+ }
+
public String getDeviceImage() {
return deviceImage;
}
diff --git a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
index bd5363c..08b0d19 100644
--- a/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
+++ b/app/src/main/java/com/casic/br/view/ResetDeviceActivity.kt
@@ -1,7 +1,5 @@
package com.casic.br.view
-import android.content.Context
-import android.util.Log
import android.view.View
import com.casic.br.R
import com.casic.br.extensions.initLayoutImmersionBar
@@ -11,7 +9,6 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.navigatePageTo
import com.pengxh.kt.lite.extensions.show
-import com.pengxh.kt.lite.extensions.toJson
import com.pengxh.kt.lite.utils.Constant
import com.pengxh.kt.lite.utils.SaveKeyValues
import com.tuya.smart.home.sdk.TuyaHomeSdk
@@ -26,8 +23,6 @@
class ResetDeviceActivity : KotlinBaseActivity() {
- private val kTag = "ResetDeviceActivity"
- private val context: Context = this@ResetDeviceActivity
private lateinit var params: ArrayList
override fun initLayoutView(): Int = R.layout.activity_reset_device
@@ -58,30 +53,26 @@
TuyaHomeSdk.getActivatorInstance().getActivatorToken(homeId.toLong(),
object : ITuyaActivatorGetToken {
override fun onSuccess(token: String) {
- Log.d(kTag, "token: $token")
//调用 配网接口 需要提供路由器的 SSID(即 Wi-Fi 名称)、密码、从云端获取的 Token 等。
val builder = ActivatorBuilder().apply {
this.ssid = params[0]
- this.context = context
+ this.context = this@ResetDeviceActivity
this.password = params[1]
this.activatorModel = ActivatorModelEnum.TY_EZ
this.timeOut = 100
this.token = token
this.listener = object : ITuyaSmartActivatorListener {
override fun onError(errorCode: String?, errorMsg: String?) {
- Log.i(kTag, "onError: $errorMsg")
+ "添加设备超时".show(this@ResetDeviceActivity)
LoadingDialogHub.dismiss()
}
override fun onActiveSuccess(devResp: DeviceBean?) {
LoadingDialogHub.dismiss()
- Log.d(kTag, devResp!!.toJson())
navigatePageTo()
}
override fun onStep(step: String?, data: Any?) {
- Log.i(kTag, "step: $step")
- Log.i(kTag, "data: $data")
LoadingDialogHub.dismiss()
}
}
diff --git a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
index 838bde6..d8035fa 100644
--- a/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/RangeHoodActivity.kt
@@ -1,7 +1,28 @@
package com.casic.br.view.device
+import com.casic.br.R
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+
/**
* 油烟机
* */
-class RangeHoodActivity {
+class RangeHoodActivity : KotlinBaseActivity() {
+
+ override fun initLayoutView(): Int = R.layout.activity_range_hood
+
+ override fun observeRequestState() {
+
+ }
+
+ override fun setupTopBarLayout() {
+
+ }
+
+ override fun initData() {
+
+ }
+
+ override fun initEvent() {
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
index 3e21b07..423ef45 100644
--- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
+++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt
@@ -13,6 +13,7 @@
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.utils.Constant
import kotlinx.android.synthetic.main.activity_water_heater.*
+import kotlinx.android.synthetic.main.include_device_title.*
import java.util.*
diff --git a/app/src/main/res/layout/activity_range_hood.xml b/app/src/main/res/layout/activity_range_hood.xml
new file mode 100644
index 0000000..811651f
--- /dev/null
+++ b/app/src/main/res/layout/activity_range_hood.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml
index 5a5f36f..d2de0ad 100644
--- a/app/src/main/res/layout/activity_water_heater.xml
+++ b/app/src/main/res/layout/activity_water_heater.xml
@@ -7,36 +7,7 @@
android:background="@mipmap/common_bkg"
android:orientation="vertical">
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_added_device_rv_g.xml b/app/src/main/res/layout/item_added_device_rv_g.xml
index e322e7e..15131cf 100644
--- a/app/src/main/res/layout/item_added_device_rv_g.xml
+++ b/app/src/main/res/layout/item_added_device_rv_g.xml
@@ -61,7 +61,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
- android:gravity="center"
android:paddingVertical="@dimen/dp_3"
android:text="@string/app_name"
android:textColor="@color/mainTextColor"
@@ -71,7 +70,6 @@
android:id="@+id/deviceUsedTimeView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:gravity="center"
android:paddingVertical="@dimen/dp_3"
android:singleLine="true"
android:text="@string/app_name"