package com.kenny.openimgur.ui.adapters; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.kenny.openimgur.R; import com.kenny.openimgur.classes.Upload; import com.kenny.openimgur.util.ImageUtil; import com.nostra13.universalimageloader.core.DisplayImageOptions; import java.util.ArrayList; import java.util.Collections; import java.util.List; import butterknife.BindView; /** * Created by Kenny-PC on 6/21/2015. */ public class UploadPhotoAdapter extends BaseRecyclerAdapter<Upload> { private View.OnClickListener mListener; public UploadPhotoAdapter(Context context, List<Upload> uploads, View.OnClickListener listener) { super(context, uploads, true); mListener = listener; } public UploadPhotoAdapter(Context context, Upload upload, View.OnClickListener listener) { this(context, new ArrayList<Upload>(1), listener); addItem(upload); } @Override public void onDestroy() { super.onDestroy(); mListener = null; } public boolean onItemMove(int from, int to) { if (from != RecyclerView.NO_POSITION && to != RecyclerView.NO_POSITION) { int movement = Math.abs(from - to); if (movement == 1) { // Item moved only 1 space over, simple swap Collections.swap(getAllItems(), from, to); notifyItemMoved(from, to); return true; } else { // Shift the items so they get rendered correctly. List<Upload> backingList = getAllItems(); Upload item = backingList.remove(from); backingList.add(to, item); notifyItemMoved(from, to); return true; } } return false; } public void updateItem(@NonNull Upload upload) { int position = -1; int size = getItemCount(); for (int i = 0; i < size; i++) { if (getItem(i).equals(upload)) { position = i; break; } } if (position > -1) { removeItem(position); addItem(upload, position); notifyItemChanged(position); } } @Override protected DisplayImageOptions getDisplayOptions() { return ImageUtil.getDisplayOptionsForPhotoPicker().build(); } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final UploadPhotoHolder holder = new UploadPhotoHolder(inflateView(R.layout.upload_photo_item, parent)); if (mListener != null) holder.itemView.setOnClickListener(mListener); return holder; } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { UploadPhotoHolder uploadHolder = (UploadPhotoHolder) holder; Upload upload = getItem(position); if (TextUtils.isEmpty(upload.getTitle()) && TextUtils.isEmpty(upload.getDescription())) { uploadHolder.contentContainer.setVisibility(View.GONE); } else { uploadHolder.contentContainer.setVisibility(View.VISIBLE); uploadHolder.title.setVisibility(TextUtils.isEmpty(upload.getTitle()) ? View.GONE : View.VISIBLE); uploadHolder.desc.setVisibility(TextUtils.isEmpty(upload.getDescription()) ? View.GONE : View.VISIBLE); } String photoLocation = upload.isLink() ? upload.getLocation() : "file://" + upload.getLocation(); displayImage(uploadHolder.image, photoLocation); } static class UploadPhotoHolder extends BaseViewHolder { @BindView(R.id.image) ImageView image; @BindView(R.id.contentContainer) View contentContainer; @BindView(R.id.title) View title; @BindView(R.id.desc) View desc; public UploadPhotoHolder(View view) { super(view); } } }