查看单据
This commit is contained in:
@@ -25,7 +25,7 @@ import com.luck.picture.lib.utils.DateUtils
|
||||
class GridImageAdapter(context: Context?, result: List<LocalMedia>?) :
|
||||
RecyclerView.Adapter<GridImageAdapter.ViewHolder?>() {
|
||||
private val mInflater: LayoutInflater
|
||||
val data = ArrayList<LocalMedia>()
|
||||
var data = mutableListOf<LocalMedia>()
|
||||
var selectMax = 9
|
||||
|
||||
/**
|
||||
@@ -49,6 +49,12 @@ class GridImageAdapter(context: Context?, result: List<LocalMedia>?) :
|
||||
}
|
||||
}
|
||||
|
||||
fun setDatas(datas:MutableList<LocalMedia>){
|
||||
this.data.clear()
|
||||
this.data = datas
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
var mImg: ImageView
|
||||
var mIvDel: ImageView
|
||||
|
||||
@@ -0,0 +1,214 @@
|
||||
package com.dahe.mylibrary.adapter
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.dahe.mylibrary.R
|
||||
import com.dahe.mylibrary.callback.OnItemLongClickListener
|
||||
import com.luck.picture.lib.config.PictureMimeType
|
||||
import com.luck.picture.lib.config.SelectMimeType
|
||||
import com.luck.picture.lib.entity.LocalMedia
|
||||
import com.luck.picture.lib.utils.DateUtils
|
||||
|
||||
/**
|
||||
* @author:luck
|
||||
* @date:2016-7-27 23:02
|
||||
* @describe:GridImageAdapter
|
||||
*/
|
||||
class OnlyShowImageAdapter(context: Context?, result: List<LocalMedia>?) :
|
||||
RecyclerView.Adapter<OnlyShowImageAdapter.ViewHolder?>() {
|
||||
private val mInflater: LayoutInflater
|
||||
var data = mutableListOf<LocalMedia>()
|
||||
var selectMax = 9
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
fun delete(position: Int) {
|
||||
try {
|
||||
if (position != RecyclerView.NO_POSITION && data.size > position) {
|
||||
data.removeAt(position)
|
||||
notifyItemRemoved(position)
|
||||
notifyItemRangeChanged(position, data.size)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
fun remove(position: Int) {
|
||||
if (position < data.size) {
|
||||
data.removeAt(position)
|
||||
}
|
||||
}
|
||||
|
||||
fun setDatas(datas:MutableList<LocalMedia>){
|
||||
this.data.clear()
|
||||
this.data = datas
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
var mImg: ImageView
|
||||
var mIvDel: ImageView
|
||||
var tvDuration: TextView
|
||||
|
||||
init {
|
||||
mImg = view.findViewById(R.id.fiv)
|
||||
mIvDel = view.findViewById(R.id.iv_del)
|
||||
tvDuration = view.findViewById(R.id.tv_duration)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
// return if (data.size < selectMax) {
|
||||
// data.size + 1
|
||||
// } else {
|
||||
return data.size
|
||||
// }
|
||||
}
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
return if (isShowAddItem(position)) {
|
||||
TYPE_CAMERA
|
||||
} else {
|
||||
TYPE_PICTURE
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建ViewHolder
|
||||
*/
|
||||
override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ViewHolder {
|
||||
val view = mInflater.inflate(R.layout.gv_filter_image, viewGroup, false)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
private fun isShowAddItem(position: Int): Boolean {
|
||||
val size = data.size
|
||||
return position == size
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置值
|
||||
*/
|
||||
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
|
||||
//少于MaxSize张,显示继续添加的图标
|
||||
// if (getItemViewType(position) == TYPE_CAMERA) {
|
||||
// viewHolder.mImg.setImageResource(R.drawable.ic_add_image)
|
||||
// viewHolder.mImg.setOnClickListener {
|
||||
// if (mItemClickListener != null) {
|
||||
// mItemClickListener!!.openPicture()
|
||||
// }
|
||||
// }
|
||||
// viewHolder.mIvDel.visibility = View.INVISIBLE
|
||||
// } else {
|
||||
|
||||
//删除按钮隐藏
|
||||
viewHolder.mIvDel.visibility = View.GONE
|
||||
viewHolder.mIvDel.setOnClickListener { view: View? ->
|
||||
val index = viewHolder.absoluteAdapterPosition
|
||||
if (index != RecyclerView.NO_POSITION && data.size > index) {
|
||||
data.removeAt(index)
|
||||
notifyItemRemoved(index)
|
||||
notifyItemRangeChanged(index, data.size)
|
||||
}
|
||||
}
|
||||
val media = data[position]
|
||||
val chooseModel = media.chooseModel
|
||||
val path = media.availablePath
|
||||
val duration = media.duration
|
||||
viewHolder.tvDuration.visibility =
|
||||
if (PictureMimeType.isHasVideo(media.mimeType)) View.VISIBLE else View.GONE
|
||||
if (chooseModel == SelectMimeType.ofAudio()) {
|
||||
viewHolder.tvDuration.visibility = View.VISIBLE
|
||||
viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds(
|
||||
R.drawable.ps_ic_audio,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
} else {
|
||||
viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds(
|
||||
R.drawable.ps_ic_video,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
)
|
||||
}
|
||||
viewHolder.tvDuration.text = DateUtils.formatDurationTime(duration)
|
||||
if (chooseModel == SelectMimeType.ofAudio()) {
|
||||
viewHolder.mImg.setImageResource(R.drawable.ps_audio_placeholder)
|
||||
} else {
|
||||
Glide.with(viewHolder.itemView.context)
|
||||
.load(
|
||||
if (PictureMimeType.isContent(path) && !media.isCut && !media.isCompressed) Uri.parse(
|
||||
path
|
||||
) else path
|
||||
)
|
||||
.centerCrop()
|
||||
.placeholder(R.color.app_color_f6)
|
||||
.diskCacheStrategy(DiskCacheStrategy.ALL)
|
||||
.into(viewHolder.mImg)
|
||||
}
|
||||
//itemView 的点击事件
|
||||
if (mItemClickListener != null) {
|
||||
viewHolder.itemView.setOnClickListener { v: View? ->
|
||||
val adapterPosition = viewHolder.absoluteAdapterPosition
|
||||
mItemClickListener!!.onItemClick(v, adapterPosition)
|
||||
}
|
||||
}
|
||||
if (mItemLongClickListener != null) {
|
||||
viewHolder.itemView.setOnLongClickListener { v: View? ->
|
||||
val adapterPosition = viewHolder.absoluteAdapterPosition
|
||||
mItemLongClickListener!!.onItemLongClick(viewHolder, adapterPosition, v)
|
||||
true
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
private var mItemClickListener: OnItemClickListener? = null
|
||||
fun setOnItemClickListener(l: OnItemClickListener?) {
|
||||
mItemClickListener = l
|
||||
}
|
||||
|
||||
interface OnItemClickListener {
|
||||
/**
|
||||
* Item click event
|
||||
*
|
||||
* @param v
|
||||
* @param position
|
||||
*/
|
||||
fun onItemClick(v: View?, position: Int)
|
||||
|
||||
/**
|
||||
* Open PictureSelector
|
||||
*/
|
||||
fun openPicture()
|
||||
}
|
||||
|
||||
private var mItemLongClickListener: OnItemLongClickListener? = null
|
||||
|
||||
init {
|
||||
mInflater = LayoutInflater.from(context)
|
||||
data.addAll(result!!)
|
||||
}
|
||||
|
||||
fun setItemLongClickListener(l: OnItemLongClickListener?) {
|
||||
mItemLongClickListener = l
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "PictureSelector"
|
||||
const val TYPE_CAMERA = 1
|
||||
const val TYPE_PICTURE = 2
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user