Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.40 KB | None | 0 0
  1.  
  2.  
  3. // Adapter
  4. public class GenericAdapter<T,K extends GenericViewHolder<T>>extends RecyclerView.Adapter<GenericViewHolder<T>> {
  5.     private IItem.Counter counter;
  6.     private IItem.Provider<T> provider;
  7.     private HashMap<String,IItemActionListener> listeners;
  8.     private IViewHolderProducer<K> viewHolderProducer;
  9.     private int layoutId;
  10.  
  11.     public GenericAdapter(IItem.Counter counter, IItem.Provider<T> provider, HashMap<String, IItemActionListener> listeners, IViewHolderProducer<K> viewHolderProducer, int layoutId) {
  12.         this.counter = counter;
  13.         this.provider = provider;
  14.         this.listeners = listeners;
  15.         this.viewHolderProducer = viewHolderProducer;
  16.         this.layoutId = layoutId;
  17.     }
  18.  
  19.     @NonNull
  20.     @Override
  21.     public GenericViewHolder<T> onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
  22.         View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(layoutId,viewGroup,false);
  23.         return viewHolderProducer.produce(itemView);
  24.    }
  25.  
  26.     @Override
  27.     public void onBindViewHolder(@NonNull GenericViewHolder<T> holder, int itemPosition) {
  28.         holder.bindItem(holder,provider.getItem(itemPosition),itemPosition);
  29.     }
  30.  
  31.     @Override
  32.     public int getItemCount() {
  33.         return counter.getItemCount();
  34.     }
  35. }
  36.  
  37. // Przykładowy viewHolder
  38. public class ViewHolder {
  39.  
  40.     public static class Country extends GenericViewHolder<Country>{
  41.         private TextView countryName;
  42.  
  43.         public forCountry(@NonNull View itemView, HashMap<String, IItemActionListener> listeners) {
  44.             super(itemView, listeners);
  45.             countryName = (TextView) itemView.findViewById(R.id.item_country_name);
  46.         }
  47.  
  48.         @Override
  49.         public void bindItem(GenericViewHolder holders, Country item, int itemPosition) {
  50.             ViewHolder.forCountry holder  = (forCountry) holders;
  51.             holder.countryName.setText(item.getName());
  52.             holder.itemView.setOnClickListener(view -> Objects.requireNonNull(getListeners().get("onclick")).onClick(itemPosition));
  53.         }
  54.     }
  55. }
  56. // Wywołanie utowrzenia adaptera przez prezenter
  57.  
  58.  void foo(){
  59.  
  60.              dbApi.labels().fetchSelected()
  61.                       .doOnSuccess((list)->
  62.                                  myView.setLabelAdapter((IItem.Provider<Label>) list::get, list::size, this.setOnClickListenersForLabels(list)))
  63.              .subscribe();
  64.  
  65.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement