package org.horaapps.leafpic.adapters; import android.content.Context; import android.graphics.PorterDuff; import android.graphics.drawable.BitmapDrawable; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.koushikdutta.ion.Ion; import com.mikepenz.community_material_typeface_library.CommunityMaterial; import com.mikepenz.iconics.view.IconicsImageView; import org.horaapps.leafpic.data.Media; import org.horaapps.leafpic.util.ColorPalette; import org.horaapps.leafpic.util.ThemeHelper; import java.util.ArrayList; /** * Created by dnld on 1/7/16. */ public class MediaAdapter extends RecyclerView.Adapter<MediaAdapter.ViewHolder> { private ArrayList<Media> medias; private BitmapDrawable drawable; private View.OnClickListener mOnClickListener; private View.OnLongClickListener mOnLongClickListener; public MediaAdapter(ArrayList<Media> ph , Context context) { medias = ph; updatePlaceholder(context); } public void updatePlaceholder(Context context) { drawable = (BitmapDrawable) ThemeHelper.getPlaceHolder(context); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(org.horaapps.leafpic.R.layout.card_photo, parent, false); v.setOnClickListener(mOnClickListener); v.setOnLongClickListener(mOnLongClickListener); return new ViewHolder(v); } @Override public void onBindViewHolder(final MediaAdapter.ViewHolder holder, int position) { Media f = medias.get(position); holder.path.setTag(f); holder.icon.setVisibility(View.GONE); if (f.isGif()) { Ion.with(holder.imageView.getContext()) .load(f.getPath()) .intoImageView(holder.imageView); holder.gifIcon.setVisibility(View.VISIBLE); } else { Glide.with(holder.imageView.getContext()) .load(f.getUri()) .asBitmap() .signature(f.getSignature()) .centerCrop() .diskCacheStrategy(DiskCacheStrategy.RESULT) .thumbnail(0.5f) .placeholder(drawable) .animate(org.horaapps.leafpic.R.anim.fade_in) .into(holder.imageView); holder.gifIcon.setVisibility(View.GONE); } if(f.isVideo()) { holder.icon.setVisibility(View.VISIBLE); holder.path.setVisibility(View.VISIBLE); holder.path.setText(f.getName()); holder.path.setTextColor(ContextCompat.getColor(holder.path.getContext(), org.horaapps.leafpic.R.color.md_dark_primary_text)); holder.path.setBackgroundColor( ColorPalette.getTransparentColor( ContextCompat.getColor(holder.path.getContext(), org.horaapps.leafpic.R.color.md_black_1000), 100)); holder.icon.setIcon(CommunityMaterial.Icon.cmd_play_circle); } else { holder.icon.setVisibility(View.GONE); holder.path.setVisibility(View.GONE); } if (f.isSelected()) { holder.icon.setIcon(CommunityMaterial.Icon.cmd_check); holder.icon.setVisibility(View.VISIBLE); holder.imageView.setColorFilter(0x88000000, PorterDuff.Mode.SRC_ATOP); holder.layout.setPadding(15,15,15,15); } else { holder.imageView.clearColorFilter(); holder.layout.setPadding(0,0,0,0); } } @Override public int getItemCount() { return medias.size(); } public void setOnClickListener(View.OnClickListener lis) { mOnClickListener = lis; } public void setOnLongClickListener(View.OnLongClickListener lis) { mOnLongClickListener = lis; } public void swapDataSet(ArrayList<Media> asd) { medias = asd; notifyDataSetChanged(); } static class ViewHolder extends RecyclerView.ViewHolder { ImageView imageView; View gifIcon, layout; TextView path; IconicsImageView icon; ViewHolder(View itemView) { super(itemView); layout = itemView.findViewById(org.horaapps.leafpic.R.id.media_card_layout); imageView = (ImageView) itemView.findViewById(org.horaapps.leafpic.R.id.photo_preview); gifIcon = itemView.findViewById(org.horaapps.leafpic.R.id.gif_icon); icon = (IconicsImageView) itemView.findViewById(org.horaapps.leafpic.R.id.icon); path = (TextView) itemView.findViewById(org.horaapps.leafpic.R.id.photo_path); } } }