Advertisement
Evyatar12

Untitled

Feb 23rd, 2019
523
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.02 KB | None | 0 0
  1. import android.graphics.Bitmap;
  2. import android.support.annotation.NonNull;
  3. import android.support.v7.widget.RecyclerView;
  4. import android.util.Log;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.Button;
  9. import android.widget.ImageView;
  10.  
  11. import java.util.List;
  12.  
  13. public class ImagesRecycler extends RecyclerView.Adapter<ImagesRecycler.ViewHolder> {
  14.  
  15.     private final Images imagesCollection;
  16.     private final List<SavedImage> images;
  17.  
  18.     public ImagesRecycler(Images images) {
  19.         this.imagesCollection = images;
  20.         this.images = images.getSavedImages();
  21.     }
  22.  
  23.     @NonNull
  24.     @Override
  25.     public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
  26.         View view = LayoutInflater.from(viewGroup.getContext())
  27.                 .inflate(R.layout.item_image, viewGroup, false);
  28.         ViewHolder holder = new ViewHolder(view);
  29.         return holder;
  30.     }
  31.  
  32.     @Override
  33.     public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
  34.         SavedImage img = images.get(i);
  35.  
  36.         if (img == null) {
  37.             return;
  38.         }
  39.  
  40.         viewHolder.init();
  41.  
  42.         viewHolder.id = img.getId();
  43.         viewHolder.image.setImageBitmap(img.getImage());
  44.     }
  45.  
  46.     @Override
  47.     public int getItemCount() {
  48.         return this.images.size();
  49.     }
  50.  
  51.     public SavedImage addImage(Bitmap bmp) {
  52.         SavedImage img = this.imagesCollection.addImage(bmp);
  53.         this.images.add(img);
  54.         notifyItemRangeInserted(this.images.size(), 1);
  55.         return img;
  56.     }
  57.  
  58.     public class ViewHolder extends RecyclerView.ViewHolder {
  59.  
  60.         public Button removeButton;
  61.         public Button toggleButton;
  62.  
  63.         public ImageView image;
  64.  
  65.         public int id;
  66.  
  67.         public ViewHolder(@NonNull View itemView) {
  68.             super(itemView);
  69.         }
  70.  
  71.         public void init() {
  72.             this.removeButton = itemView.findViewById(R.id.image_remove);
  73.             this.toggleButton = itemView.findViewById(R.id.image_toggle);
  74.             this.image = itemView.findViewById(R.id.image_image);
  75.  
  76.             this.removeButton.setOnClickListener(new ItemRemover(this));
  77.         }
  78.     }
  79.  
  80.     private class ItemRemover implements View.OnClickListener {
  81.  
  82.         private final ViewHolder holder;
  83.  
  84.         ItemRemover(ViewHolder viewHolder) {
  85.             this.holder =  viewHolder;
  86.         }
  87.  
  88.         @Override
  89.         public void onClick(View view) {
  90.             holder.removeButton.setEnabled(false);
  91.             int id = holder.id;
  92.             int pos = holder.getAdapterPosition();
  93.             holder.removeButton.setText(String.valueOf(pos));
  94.             holder.removeButton.setOnClickListener(null);
  95.             removeImage(id, pos);
  96.         }
  97.     }
  98.  
  99.     private void removeImage(int id, int pos) {
  100.         this.imagesCollection.removeImage(id);
  101.         this.images.remove(pos);
  102.  
  103.         notifyItemRemoved(pos);
  104.         notifyItemRangeChanged(pos, this.images.size());
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement