关联用户关键字搜索

This commit is contained in:
2026-05-23 09:02:03 +08:00
parent b16ced1c18
commit 2c88a9eb7e
2 changed files with 41 additions and 14 deletions

View File

@@ -2,6 +2,8 @@ package com.example.defenseapplication.liveVideo
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
@@ -30,6 +32,7 @@ class LinkedUserActivity : AppCompatActivity() {
private lateinit var binding: LinkedUserActivityBinding private lateinit var binding: LinkedUserActivityBinding
private lateinit var adapter: LinkedUserAdapter private lateinit var adapter: LinkedUserAdapter
private val fullUserList = mutableListOf<LinkedUser>()
private val userList = mutableListOf<LinkedUser>() private val userList = mutableListOf<LinkedUser>()
private var mode: Int = MODE_SETTINGS private var mode: Int = MODE_SETTINGS
@@ -317,9 +320,9 @@ class LinkedUserActivity : AppCompatActivity() {
} }
private fun updateDeviceUserList(deviceUserList: List<DeviceUserBean>) { private fun updateDeviceUserList(deviceUserList: List<DeviceUserBean>) {
userList.clear() fullUserList.clear()
deviceUserList.forEach { deviceUser -> deviceUserList.forEach { deviceUser ->
userList.add( fullUserList.add(
LinkedUser( LinkedUser(
userId = deviceUser.userId ?: "", userId = deviceUser.userId ?: "",
name = deviceUser.nickName ?: "未知用户", name = deviceUser.nickName ?: "未知用户",
@@ -329,13 +332,13 @@ class LinkedUserActivity : AppCompatActivity() {
) )
) )
} }
adapter.submitList(userList) filterUsers(binding.etSearch.text?.toString() ?: "")
} }
private fun updateFamilyMembersList(familyMembersList: List<FamilyMembersBean>) { private fun updateFamilyMembersList(familyMembersList: List<FamilyMembersBean>) {
userList.clear() fullUserList.clear()
familyMembersList.forEach { member -> familyMembersList.forEach { member ->
userList.add( fullUserList.add(
LinkedUser( LinkedUser(
userId = member.userId ?: "", userId = member.userId ?: "",
name = member.nickName ?: member.parentName ?: "未知用户", name = member.nickName ?: member.parentName ?: "未知用户",
@@ -345,6 +348,20 @@ class LinkedUserActivity : AppCompatActivity() {
) )
) )
} }
filterUsers(binding.etSearch.text?.toString() ?: "")
}
private fun filterUsers(keyword: String) {
userList.clear()
if (keyword.isEmpty()) {
userList.addAll(fullUserList)
} else {
val lowerKeyword = keyword.lowercase()
fullUserList.filter {
it.name.lowercase().contains(lowerKeyword) ||
it.phone.contains(keyword)
}.forEach { userList.add(it) }
}
adapter.submitList(userList) adapter.submitList(userList)
} }
@@ -353,9 +370,13 @@ class LinkedUserActivity : AppCompatActivity() {
finish() finish()
} }
binding.searchLayout.setOnClickListener { binding.etSearch.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
} override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
override fun afterTextChanged(s: Editable?) {
filterUsers(s?.toString() ?: "")
}
})
binding.btnAddLinkedUser.setOnClickListener { binding.btnAddLinkedUser.setOnClickListener {
val intent = Intent(this, AddLinkedUserActivity::class.java) val intent = Intent(this, AddLinkedUserActivity::class.java)

View File

@@ -58,12 +58,18 @@
android:src="@drawable/search" android:src="@drawable/search"
android:layout_marginRight="8dp"/> android:layout_marginRight="8dp"/>
<TextView <EditText
android:layout_width="wrap_content" android:id="@+id/etSearch"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:text="@string/search_preset_text" android:layout_height="40dp"
android:textColor="@color/gray" android:background="@null"
android:textSize="14sp"/> android:hint="@string/search_preset_text"
android:textColorHint="@color/gray"
android:textColor="@color/black"
android:textSize="14sp"
android:inputType="text"
android:imeOptions="actionSearch"
android:singleLine="true"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<!-- 列表区域 --> <!-- 列表区域 -->