package com.sw.inbound.activity import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup import androidx.activity.ComponentActivity import androidx.recyclerview.widget.GridLayoutManager import coil.load import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.viewholder.QuickViewHolder import com.sw.inbound.databinding.ActivityLocalImagePreviewBinding import com.sw.inbound.databinding.ListItemImagePreviewBinding import com.sw.inbound.dialog.Loading import com.sw.inbound.utils.ext.copyText import java.io.File class LocalImagePreviewActivity : ComponentActivity() { private lateinit var binding: ActivityLocalImagePreviewBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityLocalImagePreviewBinding.inflate(layoutInflater) setContentView(binding.root) binding.recyclerView.let { it.layoutManager = GridLayoutManager(this, 6, GridLayoutManager.VERTICAL, false) it.adapter = imageAdapter } binding.btnBack.setOnClickListener { finish() } loadData() } fun loadData() { Thread { runOnUiThread { Loading.show(this) } val cropFile = File(this.cacheDir, "crop") cropFile.listFiles()?.forEach { if (it.isDirectory) { return@forEach } val start = "IMG_CROP_".length val end = it.name.indexOf(".jpg") val time = it.name.substring(start, end).toLong() if (time >= 1764086400L) { imageList.add(ImageBean(file = it, name = "$time")) } } imageList.sortBy { it.name.toLong() } runOnUiThread { imageAdapter.notifyDataSetChanged() Loading.dismiss() } }.start() } private var isCycle = true private val imageList = mutableListOf() private val imageAdapter: ImageAdapter by lazy { ImageAdapter(imageList).apply { setOnItemClickListener { _, _, position -> imageList[position].name.copyText(this@LocalImagePreviewActivity) } } } data class ImageBean( var file: File, var name: String ) inner class ImageAdapter(var list: MutableList) : BaseQuickAdapter(list) { inner class VH(var binding: ListItemImagePreviewBinding) : QuickViewHolder(binding.root) override fun onBindViewHolder(holder: VH, position: Int, item: ImageBean?) { holder.binding.let { it.imageView.load(item!!.file) it.textView.text = item.name } } override fun onCreateViewHolder(context: Context, parent: ViewGroup, viewType: Int): VH { val inflater = LayoutInflater.from(context) val binding = ListItemImagePreviewBinding.inflate(inflater, parent, false) return VH(binding) } } }