首页功能交互

This commit is contained in:
2026-04-28 11:06:51 +08:00
parent 8a5f599266
commit 805c9ef068
8 changed files with 155 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
package com.example.defenseapplication.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.example.defenseapplication.R
import com.example.defenseapplication.databinding.ItemDeviceBinding
data class DeviceUi(
val name: String,
val isOnline: Boolean
)
class DeviceAdapter : RecyclerView.Adapter<DeviceAdapter.DeviceViewHolder>() {
private val items = mutableListOf<DeviceUi>()
fun submitList(deviceList: List<DeviceUi>) {
items.clear()
items.addAll(deviceList)
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DeviceViewHolder {
val binding = ItemDeviceBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return DeviceViewHolder(binding)
}
override fun onBindViewHolder(holder: DeviceViewHolder, position: Int) {
holder.bind(items[position])
}
override fun getItemCount(): Int = items.size
inner class DeviceViewHolder(private val binding: ItemDeviceBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(item: DeviceUi) {
binding.tvDeviceName.text = item.name
if (item.isOnline) {
binding.tvDeviceStatus.text = "\u25CF 正在运行"
binding.tvDeviceStatus.setTextColor(binding.root.context.getColor(R.color.green))
} else {
binding.tvDeviceStatus.text = "\u25CF 离线"
binding.tvDeviceStatus.setTextColor(binding.root.context.getColor(R.color.red))
}
}
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#A609C2BD" />
<corners android:radius="8dp" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/green" />
<corners android:radius="12dp" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z" />
</vector>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="10dp"
android:height="10dp" />
<solid android:color="#FF5A5F" />
</shape>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:background="@drawable/textinput_white_bg"
android:gravity="center_vertical"
android:orientation="vertical"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:paddingTop="4dp"
android:paddingBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivDeviceIcon"
android:layout_width="54dp"
android:layout_height="54dp"
android:src="@drawable/ic_launcher_background"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
<ImageView
android:layout_gravity="center_vertical"
android:id="@+id/ivEnter"
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/enter_icon"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tvDeviceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textSize="16dp"
android:text="智能挂式防御机1"
android:textStyle="bold" />
<TextView
android:id="@+id/tvDeviceStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:textColor="@color/gray"
android:text="正在运行1"
android:textSize="12dp" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tvFamilyName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/textinput_white_bg"
android:layout_marginBottom="8dp"
android:paddingHorizontal="14dp"
android:paddingVertical="12dp"
android:textColor="@color/black"
android:textSize="16sp" />