From a05cebae3fe3efc992b0791b6321336f5e5058a0 Mon Sep 17 00:00:00 2001 From: mxy6664 <2028180490@qq.com> Date: Mon, 3 Aug 2026 16:01:53 +0800 Subject: [PATCH] =?UTF-8?q?wifi=E9=80=89=E6=8B=A9=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../defense_device/adapter/WifiListAdapter.kt | 14 +++++++++++- .../defense_device/home/AddFamilyActivity.kt | 22 ++----------------- .../liveVideo/WiFiManagementActivity.kt | 13 +---------- app/src/main/res/layout/dialog_wifi_list.xml | 17 +++++--------- 4 files changed, 21 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/ckkj/defense_device/adapter/WifiListAdapter.kt b/app/src/main/java/com/ckkj/defense_device/adapter/WifiListAdapter.kt index 58cc678..97f8c75 100644 --- a/app/src/main/java/com/ckkj/defense_device/adapter/WifiListAdapter.kt +++ b/app/src/main/java/com/ckkj/defense_device/adapter/WifiListAdapter.kt @@ -2,6 +2,7 @@ package com.ckkj.defense_device.adapter import android.view.LayoutInflater import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.ckkj.defense_device.databinding.ItemWifiBinding @@ -39,14 +40,25 @@ class WifiListAdapter( override fun getItemCount(): Int = wifiList.size fun updateData(newList: List) { + val oldList = wifiList.toList() + val diffResult = DiffUtil.calculateDiff(object : DiffUtil.Callback() { + override fun getOldListSize() = oldList.size + override fun getNewListSize() = newList.size + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + oldList[oldItemPosition] == newList[newItemPosition] + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + oldList[oldItemPosition] == newList[newItemPosition] + }) wifiList.clear() wifiList.addAll(newList) - notifyDataSetChanged() + diffResult.dispatchUpdatesTo(this) } fun addData(newList: List) { val startPosition = wifiList.size val newItems = newList.filter { !wifiList.contains(it) } + if (newItems.isEmpty()) return wifiList.addAll(newItems) notifyItemRangeInserted(startPosition, newItems.size) } diff --git a/app/src/main/java/com/ckkj/defense_device/home/AddFamilyActivity.kt b/app/src/main/java/com/ckkj/defense_device/home/AddFamilyActivity.kt index f2e140f..f4ba382 100644 --- a/app/src/main/java/com/ckkj/defense_device/home/AddFamilyActivity.kt +++ b/app/src/main/java/com/ckkj/defense_device/home/AddFamilyActivity.kt @@ -144,10 +144,6 @@ class AddFamilyActivity : AppCompatActivity() { } dialogBinding.rvWifiList.adapter = wifiListAdapter - dialogBinding.swipeRefreshLayout.setOnRefreshListener { - refreshWifiList(dialogBinding) - } - dialogBinding.rvWifiList.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) @@ -168,16 +164,6 @@ class AddFamilyActivity : AppCompatActivity() { return rect.height() } - private fun refreshWifiList(dialogBinding: DialogWifiListBinding) { - dialogBinding.swipeRefreshLayout.isRefreshing = true - handler.postDelayed({ - wifiManager.startScan() - val newWifiList = getWifiList() - wifiListAdapter?.updateData(newWifiList) - dialogBinding.swipeRefreshLayout.isRefreshing = false - }, 1000) - } - private fun loadMoreWifiList() { isLoadingMore = true handler.postDelayed({ @@ -204,12 +190,8 @@ class AddFamilyActivity : AppCompatActivity() { } private fun updateWifiList() { - popupWindow?.contentView?.findViewById(R.id.rvWifiList)?.let { recyclerView -> - val wifiList = getWifiList() - recyclerView.adapter = WifiListAdapter(wifiList) { wifiName -> - binding.etWifiName.setText(wifiName) - popupWindow?.dismiss() - } + popupWindow?.contentView?.findViewById(R.id.rvWifiList)?.let { + wifiListAdapter?.updateData(getWifiList()) } } diff --git a/app/src/main/java/com/ckkj/defense_device/liveVideo/WiFiManagementActivity.kt b/app/src/main/java/com/ckkj/defense_device/liveVideo/WiFiManagementActivity.kt index 104ed19..2a4901e 100644 --- a/app/src/main/java/com/ckkj/defense_device/liveVideo/WiFiManagementActivity.kt +++ b/app/src/main/java/com/ckkj/defense_device/liveVideo/WiFiManagementActivity.kt @@ -202,14 +202,6 @@ class WiFiManagementActivity : AppCompatActivity() { } dialogBinding.rvWifiList.adapter = adapter - // 添加下拉刷新功能 - dialogBinding.swipeRefreshLayout.setOnRefreshListener { - wifiManager.startScan() - // 延迟1秒后停止刷新动画 - android.os.Handler().postDelayed({ - dialogBinding.swipeRefreshLayout.isRefreshing = false - }, 1000) - } } private fun updateBottomButtonVisibility() { @@ -229,9 +221,6 @@ class WiFiManagementActivity : AppCompatActivity() { } private fun updateWifiList() { - popupWindow?.contentView?.findViewById(R.id.swipeRefreshLayout)?.let { swipeRefreshLayout -> - swipeRefreshLayout.isRefreshing = false - } popupWindow?.contentView?.findViewById(R.id.rvWifiList)?.let { recyclerView -> val wifiList = getWifiList() recyclerView.adapter = WifiListAdapter(wifiList) { wifiName -> @@ -253,4 +242,4 @@ class WiFiManagementActivity : AppCompatActivity() { unregisterReceiver(wifiScanReceiver) popupWindow?.dismiss() } -} +} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_wifi_list.xml b/app/src/main/res/layout/dialog_wifi_list.xml index bbd5d57..e5c4eff 100644 --- a/app/src/main/res/layout/dialog_wifi_list.xml +++ b/app/src/main/res/layout/dialog_wifi_list.xml @@ -20,18 +20,11 @@ android:layout_height="1dp" android:background="@color/dialog_view" /> - + android:layout_weight="1" + android:overScrollMode="never" /> - - - - - \ No newline at end of file +