diff --git a/app/src/main/java/com/ckkj/defense_device/adapter/DeviceAdapter.kt b/app/src/main/java/com/ckkj/defense_device/adapter/DeviceAdapter.kt index cf890d4..bee9b13 100644 --- a/app/src/main/java/com/ckkj/defense_device/adapter/DeviceAdapter.kt +++ b/app/src/main/java/com/ckkj/defense_device/adapter/DeviceAdapter.kt @@ -3,25 +3,18 @@ package com.ckkj.defense_device.adapter import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.ckkj.defense_device.R +import com.ckkj.defense_device.bean.DeviceBean import com.ckkj.defense_device.databinding.ItemDeviceBinding -data class DeviceUi( - val name: String, - val status: String, - val deviceId: String = "" -) { - val isOnline: Boolean - get() = status == "1" -} - class DeviceAdapter( - private val onItemClick: (DeviceUi) -> Unit = {} + private val onItemClick: (DeviceBean) -> Unit = {} ) : RecyclerView.Adapter() { - private val items = mutableListOf() + private val items = mutableListOf() - fun submitList(deviceList: List) { + fun submitList(deviceList: List) { items.clear() items.addAll(deviceList) notifyDataSetChanged() @@ -33,15 +26,25 @@ class DeviceAdapter( } override fun onBindViewHolder(holder: DeviceViewHolder, position: Int) { - holder.bind(items[position]) + holder.bind(items[position], position) } override fun getItemCount(): Int = items.size + private val defaultIcons = listOf(R.mipmap.img1, R.mipmap.img2, R.mipmap.img3) + inner class DeviceViewHolder(private val binding: ItemDeviceBinding) : RecyclerView.ViewHolder(binding.root) { - fun bind(item: DeviceUi) { + fun bind(item: DeviceBean, position: Int) { + if (item.deviceImg.isNullOrEmpty()) { + val iconResId = defaultIcons[position % defaultIcons.size] + binding.ivDeviceIcon.setImageResource(iconResId) + } else { + Glide.with(binding.root.context) + .load(item.deviceImg) + .into(binding.ivDeviceIcon) + } binding.tvDeviceType.text = item.name when (item.status) { "1" -> { diff --git a/app/src/main/java/com/ckkj/defense_device/bean/DeviceBean.kt b/app/src/main/java/com/ckkj/defense_device/bean/DeviceBean.kt index f2cf771..f98b8a3 100644 --- a/app/src/main/java/com/ckkj/defense_device/bean/DeviceBean.kt +++ b/app/src/main/java/com/ckkj/defense_device/bean/DeviceBean.kt @@ -27,4 +27,13 @@ data class DeviceBean( val wifiPassword: String? = null,//WiFi密码 val workMode: String? = null,//工作模式 0-自动 1-半自动 val optionPassword: String? = null, //操作密码 -) +) { + val deviceId: String + get() = id ?: "" + + val name: String + get() = deviceName ?: "" + + val isOnline: Boolean + get() = status == "1" +} diff --git a/app/src/main/java/com/ckkj/defense_device/home/HomeMenuFragment.kt b/app/src/main/java/com/ckkj/defense_device/home/HomeMenuFragment.kt index 3140b40..8b93006 100644 --- a/app/src/main/java/com/ckkj/defense_device/home/HomeMenuFragment.kt +++ b/app/src/main/java/com/ckkj/defense_device/home/HomeMenuFragment.kt @@ -23,7 +23,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.ckkj.defense_device.R import com.ckkj.defense_device.adapter.DeviceAdapter -import com.ckkj.defense_device.adapter.DeviceUi import com.ckkj.defense_device.adapter.FamilyAdapter import com.ckkj.defense_device.bean.DeviceBean import com.ckkj.defense_device.bean.FamilyBean @@ -200,8 +199,8 @@ class HomeMenuFragment : Fragment() { // 为 LinearLayout 设置渐变背景 setGradientBackground( view = binding.gradientLayout, - startColor = Color.parseColor("#EBDCED"), - endColor = Color.parseColor("#CAF4FF") + startColor = resources.getColor(R.color.gradientLayout1), + endColor = resources.getColor(R.color.gradientLayout2) ) binding.message.setOnClickListener { val intent = Intent(requireContext(), MessageActivity::class.java) @@ -404,7 +403,7 @@ class HomeMenuFragment : Fragment() { } catch (e: Exception) { withContext(Dispatchers.Main) { binding.rvDeviceList.visibility = View.GONE - binding.layoutNoPermission.visibility = View.VISIBLE + binding.layoutNoNetwork.visibility = View.VISIBLE Toast.makeText(requireContext(), R.string.network_error, Toast.LENGTH_SHORT).show() isLoading = false if (isLoadMore) { @@ -450,20 +449,16 @@ class HomeMenuFragment : Fragment() { } private fun updateDeviceList() { - val deviceUiList = deviceBeanList.map { - DeviceUi(it.deviceName ?: "", it.status ?: "", it.id ?: "") - } - - if (deviceUiList.isEmpty()) { + if (deviceBeanList.isEmpty()) { deviceAdapter.submitList(listOf( - DeviceUi(getString(R.string.no_device), "0") + DeviceBean(deviceName = getString(R.string.no_device), status = "0") )) } else { - deviceAdapter.submitList(deviceUiList) + deviceAdapter.submitList(deviceBeanList) } } - private fun onDeviceClicked(device: DeviceUi) { + private fun onDeviceClicked(device: DeviceBean) { if (device.isOnline) { DeviceIdEvent.setDeviceId(device.deviceId) val intent = Intent(requireContext(), LiveVideoActivity::class.java) diff --git a/app/src/main/java/com/ckkj/defense_device/home/MessageActivity.kt b/app/src/main/java/com/ckkj/defense_device/home/MessageActivity.kt index 03df079..166fcc8 100644 --- a/app/src/main/java/com/ckkj/defense_device/home/MessageActivity.kt +++ b/app/src/main/java/com/ckkj/defense_device/home/MessageActivity.kt @@ -125,7 +125,7 @@ class MessageActivity : AppCompatActivity() { e.printStackTrace() withContext(Dispatchers.Main) { if (allMessages.isEmpty()) { - showEmptyState() + noNetwork() } } } finally { @@ -151,6 +151,12 @@ class MessageActivity : AppCompatActivity() { binding.rvMessageList.visibility = View.VISIBLE binding.emptyLayout.visibility = View.GONE } + + private fun noNetwork() { + binding.rvMessageList.visibility = View.GONE + binding.layoutNoNetwork.visibility = View.VISIBLE + binding.tvNoMoreData.visibility = View.GONE + } private fun showNoMoreDataHint() { binding.tvNoMoreData.visibility = View.VISIBLE diff --git a/app/src/main/java/com/ckkj/defense_device/liveVideo/AddLinkedUserActivity.kt b/app/src/main/java/com/ckkj/defense_device/liveVideo/AddLinkedUserActivity.kt index b3b106a..5ecea51 100644 --- a/app/src/main/java/com/ckkj/defense_device/liveVideo/AddLinkedUserActivity.kt +++ b/app/src/main/java/com/ckkj/defense_device/liveVideo/AddLinkedUserActivity.kt @@ -3,6 +3,7 @@ package com.ckkj.defense_device.liveVideo import android.os.Bundle import android.text.Editable import android.text.TextWatcher +import android.view.View import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope @@ -95,19 +96,33 @@ class AddLinkedUserActivity : AppCompatActivity() { Toast.makeText(this@AddLinkedUserActivity, "暂无家庭成员数据", Toast.LENGTH_SHORT).show() } } else { + hide() Toast.makeText(this@AddLinkedUserActivity, "请求失败: ${response.msg}", Toast.LENGTH_SHORT).show() } } } catch (e: Exception) { - android.util.Log.e("AddLinkedUserActivity", "网络请求异常", e) withContext(Dispatchers.Main) { binding.swipeRefresh.isRefreshing = false + noNetwork() Toast.makeText(this@AddLinkedUserActivity, "网络请求失败: ${e.message}", Toast.LENGTH_SHORT).show() } } } } + private fun hide() { + binding.searchLayout.visibility = View.GONE + binding.rvAddLinkedUser.visibility = View.GONE + binding.butting?.visibility = View.GONE + binding.layoutNoPermission?.visibility = View.VISIBLE + } + private fun noNetwork() { + binding.searchLayout.visibility = View.GONE + binding.rvAddLinkedUser.visibility = View.GONE + binding.butting?.visibility = View.GONE + binding.layoutNoNetwork?.visibility = View.VISIBLE + } + private fun updateFamilyMemberList(familyMembersList: List) { fullUserItemList.clear() familyMembersList.forEach { member -> diff --git a/app/src/main/java/com/ckkj/defense_device/liveVideo/LinkedUserActivity.kt b/app/src/main/java/com/ckkj/defense_device/liveVideo/LinkedUserActivity.kt index 1f76e90..643087d 100644 --- a/app/src/main/java/com/ckkj/defense_device/liveVideo/LinkedUserActivity.kt +++ b/app/src/main/java/com/ckkj/defense_device/liveVideo/LinkedUserActivity.kt @@ -265,8 +265,8 @@ class LinkedUserActivity : AppCompatActivity() { e.printStackTrace() withContext(Dispatchers.Main) { binding.swipeRefresh.isRefreshing = false - hide() - Toast.makeText(this@LinkedUserActivity, "网络请求失败", Toast.LENGTH_SHORT).show() + noNetwork() + Toast.makeText(this@LinkedUserActivity, R.string.network_request_failed, Toast.LENGTH_SHORT).show() } } } @@ -277,6 +277,12 @@ class LinkedUserActivity : AppCompatActivity() { binding.butting?.visibility = View.GONE binding.layoutNoPermission?.visibility = View.VISIBLE } + private fun noNetwork() { + binding.searchLayout.visibility = View.GONE + binding.rvLinkedUser.visibility = View.GONE + binding.butting?.visibility = View.GONE + binding.layoutNoNetwork?.visibility = View.VISIBLE + } private fun updateDeviceUserList(deviceUserList: List) { fullUserList.clear() diff --git a/app/src/main/res/layout/add_linked_user_activity.xml b/app/src/main/res/layout/add_linked_user_activity.xml index fe422e7..9a20178 100644 --- a/app/src/main/res/layout/add_linked_user_activity.xml +++ b/app/src/main/res/layout/add_linked_user_activity.xml @@ -88,8 +88,41 @@ android:paddingBottom="16dp"/> + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/message_activity.xml b/app/src/main/res/layout/message_activity.xml index 06f7853..b28b12b 100644 --- a/app/src/main/res/layout/message_activity.xml +++ b/app/src/main/res/layout/message_activity.xml @@ -58,7 +58,23 @@ + android:src="@mipmap/default_page_img_name" /> + + + + + #E8F7F7 #E5E5E5 #FF9800 + #EBDCED + #CAF4FF