Guest User

Untitled

a guest
Mar 11th, 2021
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.13 KB | None | 0 0
  1. package com.albertabdullin.controlwork.recycler_views;
  2.  
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.ImageView;
  7. import android.widget.TextView;
  8.  
  9. import androidx.annotation.NonNull;
  10. import androidx.appcompat.view.ActionMode;
  11. import androidx.recyclerview.selection.ItemDetailsLookup;
  12. import androidx.recyclerview.selection.SelectionTracker;
  13. import androidx.recyclerview.widget.RecyclerView;
  14.  
  15. import com.albertabdullin.controlwork.R;
  16. import com.albertabdullin.controlwork.models.SimpleEntityForDB;
  17. import com.albertabdullin.controlwork.recycler_views.selection_trackers.EntityForDBListItemDetails;
  18.  
  19. import java.util.ArrayList;
  20. import java.util.Collections;
  21. import java.util.List;
  22.  
  23. public class AdapterForItemsFromDB extends RecyclerView.Adapter<AdapterForItemsFromDB.MyViewHolder> implements RecyclerViewObservable{
  24.     private final List<SimpleEntityForDB> listOfEntities;
  25.     private RecyclerViewObserver observer;
  26.     private SelectionTracker selectionTracker;
  27.     private ActionMode actionMode;
  28.  
  29.     public class MyViewHolder extends RecyclerView.ViewHolder {
  30.         private final TextView description;
  31.         private final TextView id;
  32.         private final ImageView imageView;
  33.         private final View itemView;
  34.  
  35.         public MyViewHolder(View v) {
  36.             super(v);
  37.             itemView = v;
  38.             description = v.findViewById(R.id.item_description);
  39.             id = v.findViewById(R.id.item_id);
  40.             imageView = v.findViewById(R.id.imageView_for_list);
  41.             imageView.setVisibility(View.INVISIBLE);
  42.             description.setOnClickListener(v1 -> {
  43.                 if ((getBindingAdapterPosition() != RecyclerView.NO_POSITION) && actionMode == null)
  44.                     notifyRVObserver(getBindingAdapterPosition());
  45.             });
  46.             description.setOnLongClickListener(v12 -> {
  47.                 if (getBindingAdapterPosition() != RecyclerView.NO_POSITION) return true;
  48.                 else return false;
  49.             });
  50.         }
  51.  
  52.         public ItemDetailsLookup.ItemDetails getItemDetails() {
  53.             return new EntityForDBListItemDetails(listOfEntities.get(getBindingAdapterPosition()), getBindingAdapterPosition());
  54.         }
  55.  
  56.         public void setActivatedState(boolean b) {
  57.             itemView.setActivated(b);
  58.             if (b) imageView.setVisibility(View.VISIBLE);
  59.                 else imageView.setVisibility(View.INVISIBLE);
  60.         }
  61.  
  62.         public TextView getDescription() { return description; }
  63.         public TextView getID() {return id; }
  64.     }
  65.  
  66.     public AdapterForItemsFromDB(List<SimpleEntityForDB> list) {
  67.         listOfEntities = list;
  68.     }
  69.  
  70.     public void setRVObserver(RecyclerViewObserver observer) {
  71.         this.observer = observer;
  72.     }
  73.  
  74.     public void notifyRVObserver(int i) {
  75.         observer.onClick(listOfEntities.get(i));
  76.     }
  77.  
  78.     public void setActionMode(ActionMode am) {actionMode = am; }
  79.  
  80.     public void setSelectionTracker(SelectionTracker selectionTracker) { this.selectionTracker = selectionTracker; }
  81.  
  82.     @NonNull
  83.     @Override
  84.     public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  85.         View view = LayoutInflater.from(parent.getContext())
  86.                 .inflate(R.layout.layout_of_item_from_db_for_rv, parent, false);
  87.         return new MyViewHolder(view);
  88.     }
  89.  
  90.     @Override
  91.     public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { }
  92.  
  93.     @Override
  94.     public void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull List<Object> payloads) {
  95.         if (selectionTracker != null) holder.setActivatedState(selectionTracker.isSelected(listOfEntities.get(position)));
  96.         holder.getDescription().setText(listOfEntities.get(position).getDescription());
  97.         String text = "id: " + listOfEntities.get(position).getID();
  98.         holder.getID().setText(text);
  99.     }
  100.  
  101.     @Override
  102.     public int getItemCount() {
  103.         return listOfEntities.size();
  104.     }
  105.  
  106.     public List<SimpleEntityForDB> getCopyListOfEntities() { return new ArrayList<>(listOfEntities); }
  107.  
  108. }
Add Comment
Please, Sign In to add comment