package com.casic.endoscope.adapter import android.content.Context import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.casic.endoscope.R import com.pengxh.kt.lite.adapter.ViewHolder import java.io.File abstract class MediaFileAdapter( context: Context, private val dataRows: MutableList<File> ) : RecyclerView.Adapter<ViewHolder>() { private val inflater: LayoutInflater = LayoutInflater.from(context) private val TYPE_VIDEO = 0 private val TYPE_IMAGE = 1 override fun getItemCount(): Int = dataRows.size override fun getItemViewType(position: Int): Int { return if (dataRows[position].name.endsWith(".mp4")) { TYPE_VIDEO } else { TYPE_IMAGE } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return if (viewType == TYPE_VIDEO) { ViewHolder(inflater.inflate(R.layout.item_video_list_gv, parent, false)) } else { ViewHolder(inflater.inflate(R.layout.item_image_list_gv, parent, false)) } } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val file = dataRows[position] if (holder.itemViewType == TYPE_VIDEO) { bindVideoRes(holder, position, dataRows[position]) } else { bindImageRes(holder, dataRows[position]) } holder.itemView.setOnClickListener { itemClickedListener?.onItemClicked(position, file) } } abstract fun bindVideoRes(child: ViewHolder, childPos: Int, item: File) abstract fun bindImageRes(child: ViewHolder, item: File) private var itemClickedListener: OnItemClickedListener? = null interface OnItemClickedListener { fun onItemClicked(childPos: Int, item: File) } fun setOnItemClickedListener(listener: OnItemClickedListener) { itemClickedListener = listener } }