package com.casic.endoscope.adapter import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.casic.endoscope.R import com.casic.endoscope.utils.FileManager import com.casic.endoscope.view.BigImageActivity import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.navigatePageTo import java.io.File abstract class MediaDirAdapter( private val context: Context, private val dataRows: MutableList<String> ) : RecyclerView.Adapter<ViewHolder>() { private val kTag = "MediaDirAdapter" private lateinit var fileAdapter: MediaFileAdapter @SuppressLint("NotifyDataSetChanged") fun setRefreshData(dataRows: MutableList<String>) { this.dataRows.clear() this.dataRows.addAll(dataRows) notifyDataSetChanged() } override fun getItemCount(): Int = dataRows.size override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( LayoutInflater.from(context).inflate(R.layout.item_dir_list_rv, parent, false) ) } override fun onBindViewHolder(holder: ViewHolder, @SuppressLint("RecyclerView") position: Int) { val date = dataRows[position] holder.setText(R.id.dateView, date) //根据不同的日期显示不同的改日期下的九宫格形式子文件 val fileBeans = ArrayList<File>() val videoDir = File(File(FileManager.getRootDirectory(), "Video"), date) videoDir.listFiles()?.forEach { fileBeans.add(it) } val imageDir = File(File(FileManager.getRootDirectory(), "Picture"), date) imageDir.listFiles()?.forEach { fileBeans.add(it) } val realPaths = ArrayList<String>() fileBeans.forEach { val absolutePath = it.absolutePath if (!absolutePath.endsWith(".mp4")) { realPaths.add(absolutePath) } } fileAdapter = object : MediaFileAdapter(context, fileBeans) { override fun bindVideoRes(child: ViewHolder, childPos: Int, item: File) { bindChildVideoRes(child, childPos, item) } override fun bindImageRes(child: ViewHolder, item: File) { child.setImageResource(R.id.imageView, item.absolutePath) } } val recyclerView = holder.getView<RecyclerView>(R.id.recyclerView) recyclerView.adapter = fileAdapter fileAdapter.setOnItemClickedListener(object : MediaFileAdapter.OnItemClickedListener { override fun onItemClicked(childPos: Int, item: File) { if (!item.name.endsWith(".mp4")) { context.navigatePageTo<BigImageActivity>(childPos, realPaths) } } }) } abstract fun bindChildVideoRes(child: ViewHolder, childPos: Int, item: File) }