From 56f3f48dd939efc169de75eb1cc4a295fd72e4a7 Mon Sep 17 00:00:00 2001 From: litingting Date: Fri, 24 Oct 2025 18:20:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9F=B3=E9=A2=91=E5=A2=9E=E5=8A=A0=E6=90=9C?= =?UTF-8?q?=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../photo/PhotoSortingActivity.kt | 97 ++++++++++++++++-- .../video/file/filerecovery/utils/Common.kt | 21 ++++ app/src/main/res/drawable/bg_search_input.xml | 7 ++ .../main/res/drawable/icon_clear_search.png | Bin 0 -> 1875 bytes .../res/layout/activity_photo_sorting.xml | 61 ++++++++--- app/src/main/res/values/strings.xml | 1 + 6 files changed, 164 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/drawable/bg_search_input.xml create mode 100644 app/src/main/res/drawable/icon_clear_search.png diff --git a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt index 92e8254..9e27c9a 100644 --- a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt +++ b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt @@ -1,6 +1,8 @@ package com.ux.video.file.filerecovery.photo import android.content.Intent +import android.text.Editable +import android.text.TextWatcher import android.util.Log import android.view.LayoutInflater import android.widget.LinearLayout @@ -57,10 +59,6 @@ class PhotoSortingActivity : BaseActivity() { val FILTER_DATE_24 = 24 val FILTER_DATE_CUSTOMER = 0 - val FILTER_SIZE_ALL = -1 - val FILTER_SIZE_1 = 1 - val FILTER_SIZE_5 = 2 - val FILTER_SIZE_OVER_5 = 3 val SORT_ASC_SIZE = 0 val SORT_DESC_SIZE = 1 @@ -108,6 +106,7 @@ class PhotoSortingActivity : BaseActivity() { private var currentDateList: List>>? = null private var currentSizeList: List? = null + //选中的所有数据集合(实际选中) private lateinit var allSelectedSetList: Set @@ -372,6 +371,7 @@ class PhotoSortingActivity : BaseActivity() { titleSize.text = getString(R.string.size) filterLayoutLinearlayout.isVisible = true relativeThumbnails.isVisible = true + layoutSearch.isVisible = false sizeFilterItemArray = resources.getStringArray(R.array.filter_size_photo) } @@ -379,6 +379,7 @@ class PhotoSortingActivity : BaseActivity() { titleSize.text = getString(R.string.duration) filterLayoutLinearlayout.isVisible = true relativeThumbnails.isVisible = false + layoutSearch.isVisible = false sizeFilterItemArray = resources.getStringArray(R.array.filter_duration_video_audio) } @@ -387,15 +388,19 @@ class PhotoSortingActivity : BaseActivity() { titleSize.text = getString(R.string.duration) filterLayoutLinearlayout.isVisible = false relativeThumbnails.isVisible = false + layoutSearch.isVisible = true sizeFilterItemArray = resources.getStringArray(R.array.filter_duration_video_audio) + initSearch() } VALUE_SCAN_TYPE_documents, VALUE_SCAN_TYPE_deleted_documents -> { titleSize.text = getString(R.string.size) filterLayoutLinearlayout.isVisible = false relativeThumbnails.isVisible = false + layoutSearch.isVisible = true sizeFilterItemArray = resources.getStringArray(R.array.filter_documents_size) + initSearch() } } @@ -576,12 +581,6 @@ class PhotoSortingActivity : BaseActivity() { { clickValue -> titleSize.text = clickValue filterSize = clickValue -// when (clickValue) { -// data[0] -> filterSize = clickValue -// data[1] -> filterSize = FILTER_SIZE_1 -// data[2] -> filterSize = FILTER_SIZE_5 -// data[3] -> filterSize = FILTER_SIZE_OVER_5 -// } startFilter() }) { setItemSelect(it, false) @@ -950,5 +949,83 @@ class PhotoSortingActivity : BaseActivity() { } } + private fun initSearch() { + binding.run { + iconClearSearch.setOnClickListener { + etSearch.text.clear() + checkTypeAfter { + if (it) { + currentDateList?.let { data -> + dateAdapter?.setData(data) + checkRefreshDisPlaySelected(list1 = data) + } + + } else { + currentSizeList?.let { data -> + sizeSortAdapter?.setData(data) + checkRefreshDisPlaySelected(list2 = data) + } + } + } + + } + etSearch.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(s: Editable?) { + val toString = s?.trim().toString() + toString.let { keyword -> + checkTypeAfter { + if (it) { + currentDateList?.let { + val searchByName = Common.searchByName(it, keyword) + dateAdapter?.setData(searchByName) + Common.showLog("----------搜索更新数据0000000000") + checkRefreshDisPlaySelected(list1 = searchByName) + } + } else { + currentSizeList?.let { + val searchByName = Common.searchByNameList(it, keyword) + sizeSortAdapter?.setData(searchByName) + Common.showLog("----------搜索更新数据111111") + checkRefreshDisPlaySelected(list2 = searchByName) + } + } + } + } + } + + override fun beforeTextChanged( + s: CharSequence?, + start: Int, + count: Int, + after: Int + ) { + + } + + override fun onTextChanged( + s: CharSequence?, + start: Int, + before: Int, + count: Int + ) { + + } + + }) + } + + } + + private fun checkTypeAfter(onAction: (isDateSort: Boolean) -> Unit) { + when (binding.recyclerView.adapter) { + is PhotoDisplayDateAdapter -> { + onAction(true) + } + + is PhotoDisplayDateChildAdapter -> { + onAction(false) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/ux/video/file/filerecovery/utils/Common.kt b/app/src/main/java/com/ux/video/file/filerecovery/utils/Common.kt index a927d39..60e2243 100644 --- a/app/src/main/java/com/ux/video/file/filerecovery/utils/Common.kt +++ b/app/src/main/java/com/ux/video/file/filerecovery/utils/Common.kt @@ -86,6 +86,27 @@ object Common { } + fun searchByName( + data: List>>, + keyword: String + ): List>> { + if (keyword.isBlank()) return data + + return data.mapNotNull { (key, files) -> + val filtered = files.filter { it.name.contains(keyword, ignoreCase = true) } + if (filtered.isNotEmpty()) key to filtered else null + } + } + fun searchByNameList( + list: List, + keyword: String + ): List { + if (keyword.isBlank()) return list + return list.filter { it.name.contains(keyword, ignoreCase = true) } + } + + + /** * 格式化文件大小显示 */ diff --git a/app/src/main/res/drawable/bg_search_input.xml b/app/src/main/res/drawable/bg_search_input.xml new file mode 100644 index 0000000..9347390 --- /dev/null +++ b/app/src/main/res/drawable/bg_search_input.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_clear_search.png b/app/src/main/res/drawable/icon_clear_search.png new file mode 100644 index 0000000000000000000000000000000000000000..e86d4032f1ab71389e84ef5db63eb707dabe005d GIT binary patch literal 1875 zcmV-Z2dwysP)1y%rA0Z$@=Q4`A9b zl*M&l(e@||uiqUXU$z(Qo?3_iXJ?mNAVIgewWGEE7RHhD zrGv3t;Kq(w3jk+g;%jUE08So>sFqsX2gIW*jKyhmjIoio8_Y@og!xA}vkc-BEK`y9 zF+~s+Upf<&H8YI_pz;VuhWSbAOwD1PHAe(QSMX&(pPHc779hRrcNlCTixO~~{IwAc zoEH0aJJ%8bN*{~Js_*(Nj$C_=xe(84P*h%70Icqp0I01n`YiR23vuderEx0>5aQuQ zMD3_&@}aNvxr)1`0wik24=7deo=_XTk@!B}rMUudK2gp25Kp(3zK3D|c%Fwd1>kDW z`82QdGpXB$2s78NLIILJRgRts!76SZCY+|577Bnp6%RRz+lqQ2pB6ZA7n`CpB>)x< zuJ(Asnri#p3${2FOcE0UFify;9GZ<@P@Yp^BC;n0K$y6Cg?*};wbs_Wi3QQiJmuZT zs?YGxifUic{{eOnd#K&HqysTw_a)6rs|5!$;5v?iu>fmp{uV076{Sc84LmQ}?DaaE zyhf4!T+pOZ5wYI9iPniNGFpcaHUdvX!B_whWjXit{qAmeNQS(A_|Vy*E{#MxPV-qvQixk)=8TEwB_B*1hNV_#zA`(h0E8Nu?UwbMMs zieKkr0YoCJxt|V?(DJ7qJ4t{<(l(VZ?8Clh2TavN+(E0UO3WyVa6pS#V#f32cV2Bx z@WzPeh^Yq-5{YW832e(gra#2y7-o5syomh4eqIt%$~L4__7O`FmO(!CwaxD=yjQPY z@ti&_b8~4b!V<~HM5D;x@~~w&7l7z>MOZd@`lyuN@I>UdB;)?SRGbd0As_Q?ds>UL z`5!|X|H?#IA$bMgenkXm>n+9LJe9>j_;R#gxH~L*wV!fkqCi@nQfi?QpwiDQ5z^}M z#pPBv2A!Q~Q-Imkj%&(9SOobp3QHA$&frBxcrCJdbw%x6lr2?&Sqol9gzEv@Wcg)W zDS*|RRaGZRj0DTtvklvpwR2QIjGRs}$eP7+-WoUHk0xXX~hv|5}jA;@i zQKpNGb!=nS5sR2+xouwS=pQdRV^hx70Xj;DmGL1l5;TgZvTVb)W(6^cZI(CB>mj*g z3gD$s>%W=Pg1&AW=rU{7A=fU@* zsV`JXL~;wB(Pw6sec0D*@bhQ1ueEltbxV9~?{R>=z4y2Fph-v(FEbL52IRB;>`RO+ z&+EYfkHmd$-Px5Uh1Yi`1$ftaR7nVNC z-+gkM5P$_iunmQhJ(BsCV|o|_op|fZbD9!>l_LLjF;^VywM1LJkqZ{Sw?&>53cxUt z7c>>fg`6r2z=i>)0+e&GD-dmU1`eOdWtInp5s)?R^*Z~mp1m{7WnSq!IE){9ipHKR z06Xvn1S&4%%z*fdGks6r%kWDDAOKX{q?$}W2cxe+(AliwYb5~)L^Tl!PyQJJKAzH7 z`dq~-3qUYL0_W2K26=K@Wa`sF59=0vt!lLdAZUQy0gsaiFKzisN;GG7OP}alUBub~ zZ~*S9LC{&pv2qvZNh=c~yX!%){gyt_x4PCyfNYRnZ~KZ*Sa9SNwzO%%v0$J0<4KUm zqkHC2{i~G#9FEHOFz* + + + + + + + + + + @@ -123,30 +165,23 @@ android:layout_marginStart="8dp" android:src="@drawable/selector_arrow_up_down" /> - + + + Confirm delete? View Sorry!No %s found! + Search