Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
F
FileManager
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yanglin
FileManager
Commits
7756c502
Commit
7756c502
authored
Apr 17, 2024
by
yanglin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善similar页面所有功能
parent
ea467300
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
32 deletions
+77
-32
SimilarImagesActivity.kt
...om/xm/test/myfilemaster/activity/SimilarImagesActivity.kt
+31
-12
SimilarBeanAdapter.kt
...va/com/xm/test/myfilemaster/adapter/SimilarBeanAdapter.kt
+46
-20
No files found.
MyDemo3/app/src/main/java/com/xm/test/myfilemaster/activity/SimilarImagesActivity.kt
View file @
7756c502
...
...
@@ -10,6 +10,7 @@ import android.widget.ListView
import
android.widget.RelativeLayout
import
android.widget.TextView
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.isVisible
import
androidx.lifecycle.Observer
import
androidx.lifecycle.ViewModelProvider
import
androidx.recyclerview.widget.RecyclerView
...
...
@@ -24,7 +25,7 @@ import com.xm.test.myfilemaster.model.FileBean
import
com.xm.test.myfilemaster.view.CustomDialog
import
java.io.File
class
SimilarImagesActivity
:
AppCompatActivity
(),
OnClickListener
{
class
SimilarImagesActivity
:
AppCompatActivity
(),
OnClickListener
,
SimilarBeanAdapter
.
RefreshNumberText
{
private
lateinit
var
mTitleText
:
TextView
private
lateinit
var
mShareBtn
:
ImageView
...
...
@@ -57,7 +58,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
var
isClickEditBtn
:
Boolean
=
false
var
switchNumber
:
Int
=
0
var
isClickCheckBoxAllBtn
:
Boolean
=
false
lateinit
var
mBaseViewModel
:
BaseActivityViewModel
//
lateinit var mBaseViewModel : BaseActivityViewModel
}
...
...
@@ -92,19 +93,22 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
mListView
=
findViewById
(
R
.
id
.
files_item_listview
)
mRecycleView
=
findViewById
(
R
.
id
.
recy_cler_v
)
mSimilarBeanAdapter
=
SimilarBeanAdapter
(
this
)
mSimilarBeanAdapter
=
SimilarBeanAdapter
(
this
,
this
)
mRecycleView
.
adapter
=
mSimilarBeanAdapter
setNumber
(
0
)
// mImageItemAdapter = ImageItemAdapter(this, mDataBeans )
// mListView.adapter = mImageItemAdapter
startDuplicateImages
()
mBaseViewModel
=
ViewModelProvider
(
this
)[
BaseActivityViewModel
::
class
.
java
]
mBaseViewModel
.
setNumber
(
0
)
mBaseViewModel
.
myInt
.
observe
(
this
,
Observer
{
mSelectNumText
.
text
=
String
.
format
(
getString
(
R
.
string
.
select_0
,
BaseActivity
.
switchNumber
.
toString
()))
})
//
mBaseViewModel = ViewModelProvider(this)[BaseActivityViewModel::class.java]
//
mBaseViewModel.setNumber(0)
//
mBaseViewModel.myInt.observe(this, Observer {
// mSelectNumText.text = String.format(getString(R.string.select_0, it
.toString()))
//
})
}
...
...
@@ -178,6 +182,8 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
mSwitchSelectView
.
visibility
=
View
.
VISIBLE
isClickEditBtn
=
true
mSimilarBeanAdapter
?.
refreshItem
()
}
R
.
id
.
btn_delete
->{
val
customDialog
=
CustomDialog
(
this
)
...
...
@@ -199,7 +205,9 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
mCheckItemSelectAllBtn
.
isChecked
=
isClickCheckBoxAllBtn
// mImageItemAdapter?.selectAll(isClickCheckBoxAllBtn)
mSimilarBeanAdapter
?.
selectAll
(
isClickCheckBoxAllBtn
)
mSimilarBeanAdapter
?.
refreshItem
()
// mBaseViewModel.setNumber(mSimilarBeanAdapter?.mCheckedLists!!.size)
}
}
}
...
...
@@ -218,15 +226,26 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
isClickEditBtn
=
false
switchNumber
=
0
mSimilarBeanAdapter
?.
refreshItem
()
// if (mFileAdapter != null){
// mFileAdapter.notifyDataSetChanged()
// }
}
override
fun
onBackPressed
()
{
if
(
mCancelBtn
.
isVisible
){
cancel
()
}
else
{
super
.
onBackPressed
()
}
}
override
fun
setNumber
(
size
:
Int
)
{
mSelectNumText
.
text
=
String
.
format
(
getString
(
R
.
string
.
select_0
,
size
.
toString
()))
}
override
fun
setCheckBoxSelect
(
isChecked
:
Boolean
)
{
isClickCheckBoxAllBtn
=
isChecked
mCheckItemSelectAllBtn
.
isChecked
=
isChecked
}
}
\ No newline at end of file
MyDemo3/app/src/main/java/com/xm/test/myfilemaster/adapter/SimilarBeanAdapter.kt
View file @
7756c502
...
...
@@ -15,8 +15,9 @@ import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import
com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import
com.xm.test.myfilemaster.util.FileUtil
class
SimilarBeanAdapter
(
context
:
Context
)
:
RecyclerView
.
Adapter
<
SimilarBeanAdapter
.
AA
>()
{
class
SimilarBeanAdapter
(
context
:
Context
,
refreshNumListener
:
RefreshNumberText
)
:
RecyclerView
.
Adapter
<
SimilarBeanAdapter
.
AA
>()
{
private
val
list
=
arrayListOf
<
PicSimilarInfo
>()
private
var
refreshNumListener
:
RefreshNumberText
private
var
context
:
Context
var
mCheckedLists
:
MutableList
<
PicInfo
>
=
mutableListOf
<
PicInfo
>()
private
var
mItemCheckedArray
=
ArrayList
<
SparseBooleanArray
>()
...
...
@@ -24,6 +25,7 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
val
holders
=
ArrayList
<
AA
>()
init
{
this
.
context
=
context
this
.
refreshNumListener
=
refreshNumListener
}
fun
Int
.
inflate
(
parent
:
ViewGroup
,
attachToRoot
:
Boolean
=
false
):
View
{
...
...
@@ -46,10 +48,10 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
override
fun
onBindViewHolder
(
holder
:
AA
,
position
:
Int
)
{
holders
.
add
(
holder
)
if
(
mItemCheckedArray
.
size
!=
list
.
size
){
mItemCheckedArray
.
add
(
SparseBooleanArray
())
// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
}
//
if (mItemCheckedArray.size != list.size){
//
mItemCheckedArray.add(SparseBooleanArray())
//
//
itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
//
}
mGridAdapters
.
add
(
SimilarGridAdapter
(
list
[
position
].
getmList
(),
context
,
mItemCheckedArray
[
position
],
position
))
// val data = list[position]
...
...
@@ -57,6 +59,8 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
String
.
format
(
context
.
getString
(
R
.
string
.
similar
,
list
[
position
].
getmList
().
size
.
toString
()))
val
layoutParams
=
holder
.
binding
.
imageItemGrid
.
layoutParams
if
(
list
[
position
].
getmList
().
size
.
toFloat
()
/
4.0
==
1.0
){
layoutParams
.
height
=
FileUtil
.
dpToPx
(
80
*(
list
[
position
].
getmList
().
size
/
4
),
context
)
}
else
{
...
...
@@ -76,7 +80,7 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
}
fun
updateCheckBoxStatus
(
position
:
Int
,
view
:
View
,
itemPosition
:
Int
,
lv
:
GridView
,
fileBeanList
:
MutableList
<
PicInfo
>){
val
viewHolder
=
view
.
tag
as
ImageItemAdapter
.
Item
Adapter
.
ViewHolder
val
viewHolder
=
view
.
tag
as
SimilarGrid
Adapter
.
ViewHolder
viewHolder
.
checkBox
.
toggle
()
lv
.
setItemChecked
(
itemPosition
,
viewHolder
.
checkBox
.
isChecked
)
mItemCheckedArray
[
position
].
put
(
itemPosition
,
viewHolder
.
checkBox
.
isChecked
)
...
...
@@ -86,36 +90,58 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
mCheckedLists
.
remove
(
fileBeanList
[
itemPosition
])
}
mGridAdapters
[
position
].
notifyDataSetChanged
()
// SimilarImagesActivity.mBaseViewModel.setNumber(mCheckedLists.size)
refreshNumListener
.
setNumber
(
mCheckedLists
.
size
)
refreshNumListener
.
setCheckBoxSelect
(
false
)
}
fun
setData
(
data
:
List
<
PicSimilarInfo
>)
{
list
.
clear
()
list
.
addAll
(
data
)
mItemCheckedArray
.
clear
()
for
(
i
in
0
..
<
list
.
size
){
mItemCheckedArray
.
add
(
SparseBooleanArray
())
for
(
j
in
0
..
<
list
[
0
].
getmList
().
size
){
mItemCheckedArray
[
i
].
put
(
j
,
false
)
}
}
notifyDataSetChanged
()
}
fun
selectAll
(
isChecked
:
Boolean
){
Log
.
e
(
"yanglin"
,
"selectAll: $isChecked"
,
)
mCheckedLists
.
clear
()
if
(!
isChecked
){
for
(
i
in
0
..
<
list
.
size
){
mItemCheckedArray
[
i
].
clear
()
}
}
else
{
for
(
i
in
0
..
<
list
.
size
){
mCheckedLists
.
clear
()
setStateCheckedMap
(
i
,
isChecked
)
mCheckedLists
.
addAll
(
list
[
i
].
getmList
())
mGridAdapters
[
i
].
notifyDataSetChanged
()
}
var
num
=
0
list
.
forEach
{
setStateCheckedMap
(
num
,
isChecked
)
num
++
}
// for (i in 0..< list.size){
// setStateCheckedMap(i, isChecked)
// mCheckedLists.addAll(list[i].getmList())
// mGridAdapters[i].notifyDataSetChanged()
// }
}
fun
setStateCheckedMap
(
position
:
Int
,
isChecked
:
Boolean
){
for
(
i
in
list
[
position
].
getmList
().
indices
){
if
(
isChecked
){
mCheckedLists
.
addAll
(
list
[
position
].
getmList
())
}
for
(
i
in
0
..
<
list
[
position
].
getmList
().
size
){
mItemCheckedArray
[
position
].
put
(
i
,
isChecked
)
holders
[
position
].
binding
.
imageItemGrid
.
setItemChecked
(
i
,
isChecked
)
// holders[position].binding.imageItemGrid.setItemChecked(i, isChecked)
}
refreshNumListener
.
setNumber
(
mCheckedLists
.
size
)
}
fun
refreshItem
(){
mGridAdapters
.
forEach
{
it
.
notifyDataSetChanged
()
}
}
interface
RefreshNumberText
{
fun
setNumber
(
size
:
Int
)
fun
setCheckBoxSelect
(
isChecked
:
Boolean
)
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment