PictureSelector九宫格图片展示

简介

模拟微信朋友圈九宫格图片选取,实现添加、预览、展示、删除等操作,并对选取条件进行自定义限制。

效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程图

在这里插入图片描述

代码示例

build.gradle(app)

implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0' //图片选择器

SelectPlotAdapter

package com.sci99.mtd_baselib_demo.adapter.upload

import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView
import com.sci99.mtd_baselib_demo.R
import com.sci99.mtd_baselib_demo.utils.Tools

/**
 * Created by liubomin on 2022/11/17
 *
 * @author liubomin
 */

class SelectPlotAdapter(val context: Context, private val picMax: Int, val callback: CallbackListener) : RecyclerView.Adapter<SelectPlotAdapter.SelectHolder>() {
   

    private var mediaDtoList = mutableListOf<String>()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SelectHolder {
   
        return SelectHolder(LayoutInflater.from(context).inflate(R.layout.item_image_upload, parent, false))
    }

    override fun onBindViewHolder(holder: SelectHolder, position: Int) {
   

        if (position >= mediaDtoList.size && position < picMax) {
   
            Tools.showGlide(context, holder.gallery, "");
            holder.delete.visibility = View.GONE
        } else {
   
            Tools.showGlide(context, holder.gallery, mediaDtoList[position])
            holder.delete.visibility = View.VISIBLE
        }
        holder.delete.setOnClickListener {
   
            callback.delete(position)
        }
        holder.gallery.setOnClickListener {
   
            //添加新图片点击事件
            if (position >= mediaDtoList.size && position <= picMax - 1) {
   
                callback.add()
            } else {
   
                //点击查看图片事件
                callback.item(position)
            }
        }
    }

    override fun getItemCount(): Int {
   
        return if (mediaDtoList.size == 0) {
   
            1
        } else {
   
            if (mediaDtoList.size >= picMax) picMax else mediaDtoList.size + 1
        }
    }

    class SelectHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
   
        val gallery: ImageView = itemView.findViewById(R.id.iv_show_gallery)
        val delete: ImageView = itemView.findViewById(R.id.iv_delete)
    }


    interface CallbackListener {
   
        fun add()
        fun delete(position: Int)
        fun item(position: Int)
    }

    @SuppressLint("NotifyDataSetChanged")
    fun setImageList(mList: MutableList<String>) {
   
        this.mediaDtoList = mList
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值