Commit f375de24 authored by wanglei's avatar wanglei

...ui

parent 7304dac9
...@@ -34,18 +34,18 @@ ...@@ -34,18 +34,18 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <!-- <activity-->
android:name=".activity.whatsapp.WhatsAppCleanerActivity" <!-- android:name=".activity.whatsapp.WhatsAppCleanerActivity"-->
android:exported="false" <!-- android:exported="false"-->
android:launchMode="singleTop" <!-- android:launchMode="singleTop"-->
android:screenOrientation="portrait" <!-- android:screenOrientation="portrait"-->
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> <!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<activity <!-- <activity-->
android:name=".activity.whatsapp.WhatsAppMessageCleanActivity" <!-- android:name=".activity.whatsapp.WhatsAppMessageCleanActivity"-->
android:exported="false" <!-- android:exported="false"-->
android:launchMode="singleTop" <!-- android:launchMode="singleTop"-->
android:screenOrientation="portrait" <!-- android:screenOrientation="portrait"-->
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> <!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<activity <activity
android:name=".activity.MainActivity" android:name=".activity.MainActivity"
android:exported="false" android:exported="false"
......
package com.base.datarecovery.activity.whatsapp //package com.base.datarecovery.activity.whatsapp
//
import android.content.Intent //import android.content.Intent
import android.graphics.Color //import android.graphics.Color
import android.os.Environment //import android.os.Environment
import androidx.activity.addCallback //import androidx.activity.addCallback
import androidx.lifecycle.lifecycleScope //import androidx.lifecycle.lifecycleScope
import com.base.datarecovery.R //import com.base.datarecovery.R
import com.base.datarecovery.adapter.WhatsAppCleanerAdapter //import com.base.datarecovery.adapter.WhatsAppCleanerAdapter
import com.base.datarecovery.ads.AdmobInterstitialUtils //import com.base.datarecovery.ads.AdmobInterstitialUtils
import com.base.datarecovery.ads.AdmobNativeUtils //import com.base.datarecovery.ads.AdmobNativeUtils
import com.base.datarecovery.bean.WhatsAppCleanerBean //import com.base.datarecovery.bean.WhatsAppCleanerBean
import com.base.datarecovery.databinding.ActivityWhatsAppCleanerBinding //import com.base.datarecovery.databinding.ActivityWhatsAppCleanerBinding
import com.base.datarecovery.help.BaseActivity //import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.help.FileHelp.getDirFiles //import com.base.datarecovery.help.FileHelp.getDirFiles
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.help.PermissionHelp.checkStorePermission //import com.base.datarecovery.help.PermissionHelp.checkStorePermission
import com.base.datarecovery.help.PermissionHelp.requestStorePermission //import com.base.datarecovery.help.PermissionHelp.requestStorePermission
import com.base.datarecovery.utils.BarUtils //import com.base.datarecovery.utils.BarUtils
import com.base.datarecovery.utils.FileHexEx.isImage //import com.base.datarecovery.utils.FileHexEx.isImage
import com.base.datarecovery.utils.FileHexEx.isVideo //import com.base.datarecovery.utils.FileHexEx.isVideo
import com.base.datarecovery.utils.LogEx //import com.base.datarecovery.utils.LogEx
import com.base.datarecovery.view.DialogViews.showGerPermission //import com.base.datarecovery.view.DialogViews.showGerPermission
import com.google.gson.Gson //import com.google.gson.Gson
import kotlinx.coroutines.Dispatchers //import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch //import kotlinx.coroutines.launch
import java.io.File //import java.io.File
//
class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() { //class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
//
private val TAG = "WhatsAppCleanerActivity" // private val TAG = "WhatsAppCleanerActivity"
private lateinit var adapter: WhatsAppCleanerAdapter // private lateinit var adapter: WhatsAppCleanerAdapter
//
override val binding: ActivityWhatsAppCleanerBinding by lazy { // override val binding: ActivityWhatsAppCleanerBinding by lazy {
ActivityWhatsAppCleanerBinding.inflate(layoutInflater) // ActivityWhatsAppCleanerBinding.inflate(layoutInflater)
} // }
//
//
override fun initView() { // override fun initView() {
BarUtils.setStatusBarLightMode(this, true) // BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) // BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
adapter = WhatsAppCleanerAdapter { // adapter = WhatsAppCleanerAdapter {
startActivity(Intent(this, WhatsAppMessageCleanActivity::class.java).apply { // startActivity(Intent(this, WhatsAppMessageCleanActivity::class.java).apply {
putExtra("PathList", Gson().toJson(it.subFile.toTypedArray())) // putExtra("PathList", Gson().toJson(it.subFile.toTypedArray()))
putExtra("Tittle", it.tittle) // putExtra("Tittle", it.tittle)
}) // })
finish() // finish()
} // }
binding.rv.adapter = adapter // binding.rv.adapter = adapter
//
if (checkStorePermission()) { // if (checkStorePermission()) {
initData() // initData()
} else { // } else {
showGerPermission(null, deny = { // showGerPermission(null, deny = {
finishToMain() // finishToMain()
}, allow = { // }, allow = {
requestStorePermission( // requestStorePermission(
launcher, // launcher,
result = { flag -> // result = { flag ->
if (flag) { // if (flag) {
initData() // initData()
} else { // } else {
finishToMain() // finishToMain()
} // }
}, // },
) // )
}) // })
} // }
AdmobNativeUtils.showNativeAd(this, binding.flAd) // AdmobNativeUtils.showNativeAd(this, binding.flAd)
} // }
//
override fun initListener() { // override fun initListener() {
binding.flBack.setOnClickListener { // binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed() // onBackPressedDispatcher.onBackPressed()
} // }
onBackPressedDispatcher.addCallback { // onBackPressedDispatcher.addCallback {
AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppCleanerActivity) { // AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppCleanerActivity) {
finishToMain() // finishToMain()
} // }
} // }
binding.tvTvGotIt.setOnClickListener { // binding.tvTvGotIt.setOnClickListener {
//
} // }
//
} // }
//
//
private fun initData() = lifecycleScope.launch(Dispatchers.IO) { // private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
//
val whatsAppRoot = File(Environment.getExternalStorageDirectory(), "Android/media/com.whatsapp/WhatsApp/Media/") // val whatsAppRoot = File(Environment.getExternalStorageDirectory(), "Android/media/com.whatsapp/WhatsApp/Media/")
LogEx.logDebug(TAG, whatsAppRoot.absolutePath) // LogEx.logDebug(TAG, whatsAppRoot.absolutePath)
val list = arrayListOf<WhatsAppCleanerBean>() // val list = arrayListOf<WhatsAppCleanerBean>()
list.add(WhatsAppCleanerBean(R.mipmap.videomessages, "Video Messages")) // list.add(WhatsAppCleanerBean(R.mipmap.videomessages, "Video Messages"))
list.add(WhatsAppCleanerBean(R.mipmap.imagemessages, "Image Messages")) // list.add(WhatsAppCleanerBean(R.mipmap.imagemessages, "Image Messages"))
list.add(WhatsAppCleanerBean(R.mipmap.audiomessages, "Audio Messages")) // list.add(WhatsAppCleanerBean(R.mipmap.audiomessages, "Audio Messages"))
var totalSize = 0L // var totalSize = 0L
whatsAppRoot.listFiles()?.forEach { file -> // whatsAppRoot.listFiles()?.forEach { file ->
//
if (file.name == "WhatsApp Video") { // if (file.name == "WhatsApp Video") {
LogEx.logDebug(TAG, "whatsapp file=${file.absolutePath}") // LogEx.logDebug(TAG, "whatsapp file=${file.absolutePath}")
val bean = list.find { it.tittle == "Video Messages" } // val bean = list.find { it.tittle == "Video Messages" }
val subFile = getDirFiles(file).filter { isVideo(it) } // val subFile = getDirFiles(file).filter { isVideo(it) }
val size = subFile.sumOf { it.length() } // val size = subFile.sumOf { it.length() }
bean?.size = size // bean?.size = size
totalSize += size // totalSize += size
bean?.subFile = subFile.map { it.absolutePath } // bean?.subFile = subFile.map { it.absolutePath }
// subFile.forEach { path -> //// subFile.forEach { path ->
// LogEx.logDebug(TAG, "path=$path") //// LogEx.logDebug(TAG, "path=$path")
// } //// }
} // }
if (file.name == "WhatsApp Images") { // if (file.name == "WhatsApp Images") {
val bean = list.find { it.tittle == "Image Messages" } // val bean = list.find { it.tittle == "Image Messages" }
val subFile = getDirFiles(file).filter { isImage(it) } // val subFile = getDirFiles(file).filter { isImage(it) }
val size = subFile.sumOf { it.length() } // val size = subFile.sumOf { it.length() }
bean?.size = size // bean?.size = size
totalSize += size // totalSize += size
bean?.subFile = subFile.map { it.absolutePath } // bean?.subFile = subFile.map { it.absolutePath }
} // }
if (file.name == "WhatsApp Audio") { // if (file.name == "WhatsApp Audio") {
val bean = list.find { it.tittle == "Audio Messages" } // val bean = list.find { it.tittle == "Audio Messages" }
val subFile = getDirFiles(file).filter { it.name.contains(".mp3") } // val subFile = getDirFiles(file).filter { it.name.contains(".mp3") }
val size = subFile.sumOf { it.length() } // val size = subFile.sumOf { it.length() }
bean?.size = size // bean?.size = size
totalSize += size // totalSize += size
bean?.subFile = subFile.map { it.absolutePath } // bean?.subFile = subFile.map { it.absolutePath }
} // }
} // }
launch(Dispatchers.Main) { // launch(Dispatchers.Main) {
adapter.setData(list) // adapter.setData(list)
val split = totalSize.toFormatSize().split(" ") // val split = totalSize.toFormatSize().split(" ")
binding.tvSize.text = split[0] // binding.tvSize.text = split[0]
binding.tvUnit.text = split[1] // binding.tvUnit.text = split[1]
} // }
} // }
//
} //}
\ No newline at end of file \ No newline at end of file
package com.base.datarecovery.activity.whatsapp //package com.base.datarecovery.activity.whatsapp
//
import android.content.Intent //import android.content.Intent
import android.graphics.Color //import android.graphics.Color
import androidx.activity.addCallback //import androidx.activity.addCallback
import androidx.recyclerview.widget.GridLayoutManager //import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager //import androidx.recyclerview.widget.LinearLayoutManager
import com.base.datarecovery.adapter.WhatsAppMediaAdapter //import com.base.datarecovery.adapter.WhatsAppMediaAdapter
import com.base.datarecovery.ads.AdmobInterstitialUtils //import com.base.datarecovery.ads.AdmobInterstitialUtils
import com.base.datarecovery.ads.AdmobNativeUtils //import com.base.datarecovery.ads.AdmobNativeUtils
import com.base.datarecovery.bean.MediaBean //import com.base.datarecovery.bean.MediaBean
import com.base.datarecovery.databinding.ActivityWhatsAppMessageCleanBinding //import com.base.datarecovery.databinding.ActivityWhatsAppMessageCleanBinding
import com.base.datarecovery.help.BaseActivity //import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.utils.BarUtils //import com.base.datarecovery.utils.BarUtils
import com.google.gson.Gson //import com.google.gson.Gson
import java.io.File //import java.io.File
//
class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBinding>() { //class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBinding>() {
//
private val pathList by lazy { // private val pathList by lazy {
val json = intent.extras?.getString("PathList") // val json = intent.extras?.getString("PathList")
val list = Gson().fromJson(json, Array<String>::class.java) // val list = Gson().fromJson(json, Array<String>::class.java)
list.map { MediaBean(it) } // list.map { MediaBean(it) }
} // }
private lateinit var adapter: WhatsAppMediaAdapter // private lateinit var adapter: WhatsAppMediaAdapter
//
override val binding: ActivityWhatsAppMessageCleanBinding by lazy { // override val binding: ActivityWhatsAppMessageCleanBinding by lazy {
ActivityWhatsAppMessageCleanBinding.inflate(layoutInflater) // ActivityWhatsAppMessageCleanBinding.inflate(layoutInflater)
} // }
//
//
override fun initView() { // override fun initView() {
BarUtils.setStatusBarLightMode(this, true) // BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) // BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
val tittle = intent.extras?.getString("Tittle") ?: "" // val tittle = intent.extras?.getString("Tittle") ?: ""
binding.tvTitle.text = tittle // binding.tvTitle.text = tittle
//
var isList = false // var isList = false
when (tittle) { // when (tittle) {
"Audio Messages" -> { // "Audio Messages" -> {
binding.rv.layoutManager = LinearLayoutManager(this) // binding.rv.layoutManager = LinearLayoutManager(this)
isList = true // isList = true
} // }
//
else -> { // else -> {
binding.rv.layoutManager = GridLayoutManager(this, 3) // binding.rv.layoutManager = GridLayoutManager(this, 3)
} // }
} // }
//
adapter = WhatsAppMediaAdapter(isList) { // adapter = WhatsAppMediaAdapter(isList) {
binding.llSelectAll.isSelected = it // binding.llSelectAll.isSelected = it
binding.tvClean.isEnabled = adapter.getSelectData().isNotEmpty() // binding.tvClean.isEnabled = adapter.getSelectData().isNotEmpty()
val split = adapter.getSelectDataSize().toFormatSize().split(" ") // val split = adapter.getSelectDataSize().toFormatSize().split(" ")
binding.tvSize.text = split[0] // binding.tvSize.text = split[0]
binding.tvUnit.text = split[1] // binding.tvUnit.text = split[1]
} // }
binding.rv.adapter = adapter // binding.rv.adapter = adapter
adapter.setData(pathList) // adapter.setData(pathList)
//
AdmobNativeUtils.showNativeAd(this, binding.flAd) // AdmobNativeUtils.showNativeAd(this, binding.flAd)
} // }
//
override fun initListener() { // override fun initListener() {
binding.flBack.setOnClickListener { // binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed() // onBackPressedDispatcher.onBackPressed()
} // }
onBackPressedDispatcher.addCallback { // onBackPressedDispatcher.addCallback {
AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) { // AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) {
finishToMain() // finishToMain()
} // }
} // }
binding.llSelectAll.setOnClickListener { // binding.llSelectAll.setOnClickListener {
it.isSelected = !it.isSelected // it.isSelected = !it.isSelected
adapter.toggleSelect(it.isSelected) // adapter.toggleSelect(it.isSelected)
binding.tvClean.isEnabled = it.isSelected // binding.tvClean.isEnabled = it.isSelected
val split = adapter.getSelectDataSize().toFormatSize().split(" ") // val split = adapter.getSelectDataSize().toFormatSize().split(" ")
binding.tvSize.text = split[0] // binding.tvSize.text = split[0]
binding.tvUnit.text = split[1] // binding.tvUnit.text = split[1]
} // }
//
binding.tvClean.setOnClickListener { // binding.tvClean.setOnClickListener {
//
AdmobInterstitialUtils.showInterstitialAd(this) { // AdmobInterstitialUtils.showInterstitialAd(this) {
val list = adapter.getSelectData() // val list = adapter.getSelectData()
runCatching { // runCatching {
list.forEach { File(it).delete() } // list.forEach { File(it).delete() }
} // }
finish() // finish()
} // }
} // }
} // }
//
//
} //}
\ No newline at end of file \ No newline at end of file
package com.base.datarecovery.adapter //package com.base.datarecovery.adapter
//
import android.annotation.SuppressLint //import android.annotation.SuppressLint
import android.graphics.Color //import android.graphics.Color
import android.view.View //import android.view.View
import android.view.ViewGroup //import android.view.ViewGroup
import androidx.core.content.ContextCompat //import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView //import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder //import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R //import com.base.datarecovery.R
import com.base.datarecovery.bean.WhatsAppCleanerBean //import com.base.datarecovery.bean.WhatsAppCleanerBean
import com.base.datarecovery.databinding.ItemWhatsappBinding //import com.base.datarecovery.databinding.ItemWhatsappBinding
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.utils.ScreenUtil.dpToPx //import com.base.datarecovery.utils.ScreenUtil.dpToPx
import com.base.datarecovery.view.XmlEx.inflate //import com.base.datarecovery.view.XmlEx.inflate
import com.bumptech.glide.Glide //import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.CenterCrop //import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners //import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions //import com.bumptech.glide.request.RequestOptions
//
class WhatsAppCleanerAdapter(val click: (bean: WhatsAppCleanerBean) -> Unit) : RecyclerView.Adapter<WhatsAppCleanerAdapter.Whats>() { //class WhatsAppCleanerAdapter(val click: (bean: WhatsAppCleanerBean) -> Unit) : RecyclerView.Adapter<WhatsAppCleanerAdapter.Whats>() {
//
private val beanList = arrayListOf<WhatsAppCleanerBean>() // private val beanList = arrayListOf<WhatsAppCleanerBean>()
//
class Whats(view: View) : ViewHolder(view) { // class Whats(view: View) : ViewHolder(view) {
//
} // }
//
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Whats { // override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Whats {
return Whats(R.layout.item_whatsapp.inflate(parent)) // return Whats(R.layout.item_whatsapp.inflate(parent))
} // }
//
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return beanList.size // return beanList.size
} // }
//
override fun onBindViewHolder(holder: Whats, position: Int) { // override fun onBindViewHolder(holder: Whats, position: Int) {
val binding = ItemWhatsappBinding.bind(holder.itemView) // val binding = ItemWhatsappBinding.bind(holder.itemView)
val context = holder.itemView.context // val context = holder.itemView.context
val bean = beanList[position] // val bean = beanList[position]
binding.iv.setImageDrawable(ContextCompat.getDrawable(context, bean.icon)) // binding.iv.setImageDrawable(ContextCompat.getDrawable(context, bean.icon))
binding.tvTitle.text = bean.tittle // binding.tvTitle.text = bean.tittle
if (bean.subFile.isEmpty()) { // if (bean.subFile.isEmpty()) {
binding.llIv.visibility = View.GONE // binding.llIv.visibility = View.GONE
binding.tvSize.setTextColor(Color.parseColor("#999999")) // binding.tvSize.setTextColor(Color.parseColor("#999999"))
binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotu_whatsapp)) // binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotu_whatsapp))
binding.tvNoMessage.visibility = View.VISIBLE // binding.tvNoMessage.visibility = View.VISIBLE
} else { // } else {
binding.llIv.visibility = View.VISIBLE // binding.llIv.visibility = View.VISIBLE
runCatching { // runCatching {
val options = RequestOptions().transform(CenterCrop(), RoundedCorners(context.dpToPx(10))) // val options = RequestOptions().transform(CenterCrop(), RoundedCorners(context.dpToPx(10)))
val image1 = bean.subFile[0] // val image1 = bean.subFile[0]
Glide.with(context).load(image1).apply(options).into(binding.iv1) // Glide.with(context).load(image1).apply(options).into(binding.iv1)
//
val image2 = bean.subFile[1] // val image2 = bean.subFile[1]
Glide.with(context).load(image2).apply(options).into(binding.iv2) // Glide.with(context).load(image2).apply(options).into(binding.iv2)
//
val image3 = bean.subFile[2] // val image3 = bean.subFile[2]
Glide.with(context).load(image3).apply(options).into(binding.iv3) // Glide.with(context).load(image3).apply(options).into(binding.iv3)
} // }
binding.tvSize.setTextColor(Color.parseColor("#355BEA")) // binding.tvSize.setTextColor(Color.parseColor("#355BEA"))
binding.tvSize.text = bean.size.toFormatSize() // binding.tvSize.text = bean.size.toFormatSize()
binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotul_whatsapp)) // binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotul_whatsapp))
binding.tvNoMessage.visibility = View.GONE // binding.tvNoMessage.visibility = View.GONE
} // }
binding.root.setOnClickListener { // binding.root.setOnClickListener {
if (bean.subFile.isEmpty()) { // if (bean.subFile.isEmpty()) {
return@setOnClickListener // return@setOnClickListener
} // }
click.invoke(bean) // click.invoke(bean)
} // }
} // }
//
@SuppressLint("NotifyDataSetChanged") // @SuppressLint("NotifyDataSetChanged")
fun setData(list: List<WhatsAppCleanerBean>) { // fun setData(list: List<WhatsAppCleanerBean>) {
beanList.clear() // beanList.clear()
beanList.addAll(list) // beanList.addAll(list)
notifyDataSetChanged() // notifyDataSetChanged()
} // }
//
//
} //}
\ No newline at end of file \ No newline at end of file
package com.base.datarecovery.adapter //package com.base.datarecovery.adapter
//
import android.annotation.SuppressLint //import android.annotation.SuppressLint
import android.view.View //import android.view.View
import android.view.ViewGroup //import android.view.ViewGroup
import androidx.core.content.ContextCompat //import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView //import androidx.recyclerview.widget.RecyclerView
import com.base.datarecovery.R //import com.base.datarecovery.R
import com.base.datarecovery.bean.MediaBean //import com.base.datarecovery.bean.MediaBean
import com.base.datarecovery.databinding.ItemMediaFileBinding //import com.base.datarecovery.databinding.ItemMediaFileBinding
import com.base.datarecovery.databinding.ItemMediaSelectBinding //import com.base.datarecovery.databinding.ItemMediaSelectBinding
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.view.XmlEx.inflate //import com.base.datarecovery.view.XmlEx.inflate
import com.bumptech.glide.Glide //import com.bumptech.glide.Glide
import java.io.File //import java.io.File
//
class WhatsAppMediaAdapter( //class WhatsAppMediaAdapter(
private val isList: Boolean = false, // private val isList: Boolean = false,
private val click: (allSelect: Boolean) -> Unit // private val click: (allSelect: Boolean) -> Unit
) : RecyclerView.Adapter<WhatsAppMediaAdapter.WhatMedia>() { //) : RecyclerView.Adapter<WhatsAppMediaAdapter.WhatMedia>() {
//
private val beanList = arrayListOf<MediaBean>() // private val beanList = arrayListOf<MediaBean>()
//
class WhatMedia(view: View) : RecyclerView.ViewHolder(view) // class WhatMedia(view: View) : RecyclerView.ViewHolder(view)
//
//
override fun getItemViewType(position: Int): Int { // override fun getItemViewType(position: Int): Int {
return if (isList) 0 else 1 // return if (isList) 0 else 1
} // }
//
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WhatMedia { // override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WhatMedia {
val layout = if (viewType == 0) R.layout.item_media_file else R.layout.item_media_select // val layout = if (viewType == 0) R.layout.item_media_file else R.layout.item_media_select
return WhatMedia(layout.inflate(parent)) // return WhatMedia(layout.inflate(parent))
} // }
//
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return beanList.size // return beanList.size
} // }
//
override fun onBindViewHolder(holder: WhatMedia, position: Int) { // override fun onBindViewHolder(holder: WhatMedia, position: Int) {
//
} // }
//
override fun onBindViewHolder(holder: WhatMedia, position: Int, payloads: MutableList<Any>) { // override fun onBindViewHolder(holder: WhatMedia, position: Int, payloads: MutableList<Any>) {
//
//
val context = holder.itemView.context // val context = holder.itemView.context
val bean = beanList[position] // val bean = beanList[position]
//
if (isList) { // if (isList) {
val binding = ItemMediaFileBinding.bind(holder.itemView) // val binding = ItemMediaFileBinding.bind(holder.itemView)
//
if (payloads.isEmpty()) { // if (payloads.isEmpty()) {
binding.iv.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.audiomessages)) // binding.iv.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.audiomessages))
val file = File(bean.path) // val file = File(bean.path)
binding.tvName.text = file.name // binding.tvName.text = file.name
binding.tvSize.text = file.length().toFormatSize() // binding.tvSize.text = file.length().toFormatSize()
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
binding.root.setOnClickListener { // binding.root.setOnClickListener {
binding.ivSelector.isSelected = !binding.ivSelector.isSelected // binding.ivSelector.isSelected = !binding.ivSelector.isSelected
bean.isSelect = binding.ivSelector.isSelected // bean.isSelect = binding.ivSelector.isSelected
notifyItemChanged(position, "sdd") // notifyItemChanged(position, "sdd")
click.invoke(beanList.all { it.isSelect }) // click.invoke(beanList.all { it.isSelect })
} // }
} else { // } else {
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
super.onBindViewHolder(holder, position, payloads) // super.onBindViewHolder(holder, position, payloads)
} // }
} else { // } else {
val binding = ItemMediaSelectBinding.bind(holder.itemView) // val binding = ItemMediaSelectBinding.bind(holder.itemView)
if (payloads.isEmpty()) { // if (payloads.isEmpty()) {
Glide.with(context).load(bean.path).centerCrop().into(binding.iv) // Glide.with(context).load(bean.path).centerCrop().into(binding.iv)
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
binding.root.setOnClickListener { // binding.root.setOnClickListener {
binding.ivSelector.isSelected = !binding.ivSelector.isSelected // binding.ivSelector.isSelected = !binding.ivSelector.isSelected
bean.isSelect = binding.ivSelector.isSelected // bean.isSelect = binding.ivSelector.isSelected
notifyItemChanged(position, "sdd") // notifyItemChanged(position, "sdd")
click.invoke(beanList.all { it.isSelect }) // click.invoke(beanList.all { it.isSelect })
} // }
} else { // } else {
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
super.onBindViewHolder(holder, position, payloads) // super.onBindViewHolder(holder, position, payloads)
} // }
//
} // }
} // }
//
@SuppressLint("NotifyDataSetChanged") // @SuppressLint("NotifyDataSetChanged")
fun setData(pathList: List<MediaBean>) { // fun setData(pathList: List<MediaBean>) {
beanList.clear() // beanList.clear()
beanList.addAll(pathList) // beanList.addAll(pathList)
notifyDataSetChanged() // notifyDataSetChanged()
} // }
//
@SuppressLint("NotifyDataSetChanged") // @SuppressLint("NotifyDataSetChanged")
fun toggleSelect(select: Boolean) { // fun toggleSelect(select: Boolean) {
beanList.forEach { it.isSelect = select } // beanList.forEach { it.isSelect = select }
notifyDataSetChanged() // notifyDataSetChanged()
} // }
//
fun getSelectData(): List<String> { // fun getSelectData(): List<String> {
return beanList.filter { it.isSelect }.map { it.path } // return beanList.filter { it.isSelect }.map { it.path }
} // }
//
fun getSelectDataSize(): Long { // fun getSelectDataSize(): Long {
return getSelectData().map { File(it) }.sumOf { it.length() } // return getSelectData().map { File(it) }.sumOf { it.length() }
} // }
} //}
\ No newline at end of file \ 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