|
package com.electric.chargingpile.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.electric.chargingpile.R;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.entity.MediaData;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class GridImageAdapter extends RecyclerView.Adapter<GridImageAdapter.ViewHolder> {
private List<LocalMedia> mDatas=new ArrayList<>();
private Context context;
private int maxCount=9;
private int mItemWidth=0;
private int mItemMarginTop=0;
public int getMaxCount() {
return maxCount;
}
public void setMaxCount(int maxCount) {
this.maxCount = maxCount;
}
private GridImgListener mListener =null;
public GridImgListener getListener() {
return mListener;
}
public void setListener(GridImgListener mListener) {
this.mListener = mListener;
}
public GridImageAdapter(Context context, int maxCount, int mItemWidth,int mItemMarginTop) {
this.context = context;
this.maxCount = maxCount;
this.mItemWidth = mItemWidth;
this.mItemMarginTop = mItemMarginTop;
}
public List<LocalMedia> getDatas() {
return mDatas;
}
public void setDatas(List<LocalMedia> mDatas) {
this.mDatas = mDatas;
notifyDataSetChanged();
}
@NonNull
@NotNull
@Override
public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
View rootView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item_add_img, parent, false);
GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) rootView.getLayoutParams();
layoutParams.width=mItemWidth;
layoutParams.height=mItemWidth;
layoutParams.topMargin = mItemMarginTop;
rootView.setLayoutParams(layoutParams);
return new ViewHolder(rootView);
}
@Override
public void onBindViewHolder(@NonNull @NotNull ViewHolder holder, int position) {
if (position == getItemCount() - 1 && mDatas.size() < maxCount) {
//进行添加
holder.itemView.setOnClickListener(v->{
if (mListener != null){
mListener.add();
}
});
holder.imageView.setImageResource(R.drawable.icon_comment_upload);
// holder.imageView.setImageResource(R.drawable.addpic65);
holder.remove.setVisibility( View.GONE);
} else {
String path="";
LocalMedia data = mDatas.get(position);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
path= data.getAndroidQToPath();
else {
path= data.getPath();
}
Glide.with(context)
.load(path)
.into(holder.imageView);
holder.remove.setVisibility( View.VISIBLE);
holder.remove.setOnClickListener(v->{
//删除
mDatas.remove(position);
notifyDataSetChanged();
if (mListener!=null){
mListener.remove(position);
}
});
holder.itemView.setOnClickListener(v->{
//跳转至图片详情页
if (mListener != null){
mListener.open(position,data);
}
});
}
}
@Override
public int getItemCount() {
if (mDatas.size() >= maxCount) {
return maxCount;
} else {
return mDatas.size() + 1;
}
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final ImageView remove;
private final ImageView imageView;
public ViewHolder(@NonNull @NotNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image);
remove = itemView.findViewById(R.id.remove);
}
}
public interface GridImgListener{
void add();
void remove(int position);
void open(int position, LocalMedia mLocalMedia );
}
}
|