Commit 7756c502 authored by yanglin's avatar yanglin

完善similar页面所有功能

parent ea467300
......@@ -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
......@@ -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.ItemAdapter.ViewHolder
val viewHolder = view.tag as SimilarGridAdapter.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
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