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 0000000..e86d403 Binary files /dev/null and b/app/src/main/res/drawable/icon_clear_search.png differ diff --git a/app/src/main/res/layout/activity_photo_sorting.xml b/app/src/main/res/layout/activity_photo_sorting.xml index 6d8dec3..141f816 100644 --- a/app/src/main/res/layout/activity_photo_sorting.xml +++ b/app/src/main/res/layout/activity_photo_sorting.xml @@ -42,11 +42,53 @@ app:selected_text="@string/deselect_all" tools:ignore="RelativeOverlap" /> + + + + + + + + + + @@ -123,30 +165,23 @@ android:layout_marginStart="8dp" android:src="@drawable/selector_arrow_up_down" /> - + + + Confirm delete? View Sorry!No %s found! + Search