Commit 7756c502 authored by yanglin's avatar yanglin

完善similar页面所有功能

parent ea467300
...@@ -10,6 +10,7 @@ import android.widget.ListView ...@@ -10,6 +10,7 @@ import android.widget.ListView
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
...@@ -24,7 +25,7 @@ import com.xm.test.myfilemaster.model.FileBean ...@@ -24,7 +25,7 @@ import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.view.CustomDialog import com.xm.test.myfilemaster.view.CustomDialog
import java.io.File import java.io.File
class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanAdapter.RefreshNumberText{
private lateinit var mTitleText: TextView private lateinit var mTitleText: TextView
private lateinit var mShareBtn: ImageView private lateinit var mShareBtn: ImageView
...@@ -57,7 +58,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ ...@@ -57,7 +58,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
var isClickEditBtn: Boolean = false var isClickEditBtn: Boolean = false
var switchNumber: Int = 0 var switchNumber: Int = 0
var isClickCheckBoxAllBtn: Boolean = false var isClickCheckBoxAllBtn: Boolean = false
lateinit var mBaseViewModel : BaseActivityViewModel // lateinit var mBaseViewModel : BaseActivityViewModel
} }
...@@ -92,19 +93,22 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ ...@@ -92,19 +93,22 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
mListView = findViewById(R.id.files_item_listview) mListView = findViewById(R.id.files_item_listview)
mRecycleView = findViewById(R.id.recy_cler_v) mRecycleView = findViewById(R.id.recy_cler_v)
mSimilarBeanAdapter = SimilarBeanAdapter(this) mSimilarBeanAdapter = SimilarBeanAdapter(this, this)
mRecycleView.adapter = mSimilarBeanAdapter mRecycleView.adapter = mSimilarBeanAdapter
setNumber(0)
// mImageItemAdapter = ImageItemAdapter(this, mDataBeans ) // mImageItemAdapter = ImageItemAdapter(this, mDataBeans )
// mListView.adapter = mImageItemAdapter // mListView.adapter = mImageItemAdapter
startDuplicateImages() startDuplicateImages()
mBaseViewModel = ViewModelProvider(this)[BaseActivityViewModel::class.java] // mBaseViewModel = ViewModelProvider(this)[BaseActivityViewModel::class.java]
mBaseViewModel.setNumber(0) // mBaseViewModel.setNumber(0)
mBaseViewModel.myInt.observe(this, Observer { // mBaseViewModel.myInt.observe(this, Observer {
mSelectNumText.text = String.format(getString(R.string.select_0, BaseActivity.switchNumber.toString())) // mSelectNumText.text = String.format(getString(R.string.select_0, it.toString()))
}) // })
} }
...@@ -178,6 +182,8 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ ...@@ -178,6 +182,8 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
mSwitchSelectView.visibility = View.VISIBLE mSwitchSelectView.visibility = View.VISIBLE
isClickEditBtn = true isClickEditBtn = true
mSimilarBeanAdapter?.refreshItem()
} }
R.id.btn_delete ->{ R.id.btn_delete ->{
val customDialog = CustomDialog(this) val customDialog = CustomDialog(this)
...@@ -199,7 +205,9 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ ...@@ -199,7 +205,9 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
mCheckItemSelectAllBtn.isChecked = isClickCheckBoxAllBtn mCheckItemSelectAllBtn.isChecked = isClickCheckBoxAllBtn
// mImageItemAdapter?.selectAll(isClickCheckBoxAllBtn) // mImageItemAdapter?.selectAll(isClickCheckBoxAllBtn)
mSimilarBeanAdapter?.selectAll(isClickCheckBoxAllBtn) mSimilarBeanAdapter?.selectAll(isClickCheckBoxAllBtn)
mSimilarBeanAdapter?.refreshItem()
// mBaseViewModel.setNumber(mSimilarBeanAdapter?.mCheckedLists!!.size)
} }
} }
} }
...@@ -218,15 +226,26 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ ...@@ -218,15 +226,26 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
isClickEditBtn = false isClickEditBtn = false
switchNumber = 0 switchNumber = 0
mSimilarBeanAdapter?.refreshItem()
// if (mFileAdapter != null){ // if (mFileAdapter != null){
// mFileAdapter.notifyDataSetChanged() // 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
...@@ -15,8 +15,9 @@ import com.xm.test.myfilemaster.activity.SimilarImagesActivity ...@@ -15,8 +15,9 @@ import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import com.xm.test.myfilemaster.util.FileUtil 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 val list = arrayListOf<PicSimilarInfo>()
private var refreshNumListener: RefreshNumberText
private var context: Context private var context: Context
var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>() var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>()
private var mItemCheckedArray = ArrayList<SparseBooleanArray>() private var mItemCheckedArray = ArrayList<SparseBooleanArray>()
...@@ -24,6 +25,7 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda ...@@ -24,6 +25,7 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
val holders = ArrayList<AA>() val holders = ArrayList<AA>()
init { init {
this.context = context this.context = context
this.refreshNumListener = refreshNumListener
} }
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View { fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
...@@ -46,10 +48,10 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda ...@@ -46,10 +48,10 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
override fun onBindViewHolder(holder: AA, position: Int) { override fun onBindViewHolder(holder: AA, position: Int) {
holders.add(holder) holders.add(holder)
if (mItemCheckedArray.size != list.size){ // if (mItemCheckedArray.size != list.size){
mItemCheckedArray.add(SparseBooleanArray()) // mItemCheckedArray.add(SparseBooleanArray())
// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position)) //// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
} // }
mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position)) mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position))
// val data = list[position] // val data = list[position]
...@@ -57,6 +59,8 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda ...@@ -57,6 +59,8 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
String.format(context.getString(R.string.similar, list[position].getmList().size.toString())) String.format(context.getString(R.string.similar, list[position].getmList().size.toString()))
val layoutParams = holder.binding.imageItemGrid.layoutParams val layoutParams = holder.binding.imageItemGrid.layoutParams
if (list[position].getmList().size.toFloat() / 4.0 == 1.0){ if (list[position].getmList().size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(80*(list[position].getmList().size / 4), context) layoutParams.height = FileUtil.dpToPx(80*(list[position].getmList().size / 4), context)
}else{ }else{
...@@ -76,7 +80,7 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda ...@@ -76,7 +80,7 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
} }
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){ fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){
val viewHolder = view.tag as ImageItemAdapter.ItemAdapter.ViewHolder val viewHolder = view.tag as SimilarGridAdapter.ViewHolder
viewHolder.checkBox.toggle() viewHolder.checkBox.toggle()
lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked) lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked)
mItemCheckedArray[position].put(itemPosition, viewHolder.checkBox.isChecked) mItemCheckedArray[position].put(itemPosition, viewHolder.checkBox.isChecked)
...@@ -86,36 +90,58 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda ...@@ -86,36 +90,58 @@ class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAda
mCheckedLists.remove(fileBeanList[itemPosition]) mCheckedLists.remove(fileBeanList[itemPosition])
} }
mGridAdapters[position].notifyDataSetChanged() mGridAdapters[position].notifyDataSetChanged()
// SimilarImagesActivity.mBaseViewModel.setNumber(mCheckedLists.size)
refreshNumListener.setNumber(mCheckedLists.size)
refreshNumListener.setCheckBoxSelect(false)
} }
fun setData(data: List<PicSimilarInfo>) { fun setData(data: List<PicSimilarInfo>) {
list.clear() list.clear()
list.addAll(data) 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() notifyDataSetChanged()
} }
fun selectAll(isChecked: Boolean){ fun selectAll(isChecked: Boolean){
Log.e("yanglin", "selectAll: $isChecked", ) Log.e("yanglin", "selectAll: $isChecked", )
mCheckedLists.clear() mCheckedLists.clear()
if (!isChecked){ var num = 0
for (i in 0..< list.size){ list.forEach {
mItemCheckedArray[i].clear() setStateCheckedMap(num, isChecked)
} num++
}else{
for (i in 0..< list.size){
mCheckedLists.clear()
setStateCheckedMap(i, isChecked)
mCheckedLists.addAll(list[i].getmList())
mGridAdapters[i].notifyDataSetChanged()
}
} }
// for (i in 0..< list.size){
// setStateCheckedMap(i, isChecked)
// mCheckedLists.addAll(list[i].getmList())
// mGridAdapters[i].notifyDataSetChanged()
// }
} }
fun setStateCheckedMap(position: Int, isChecked: Boolean){ 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) 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment