1 package com.moiseum.wolnelektury.view.news.single;
3 import android.annotation.SuppressLint;
4 import android.content.Context;
5 import android.support.annotation.NonNull;
6 import android.support.v4.view.PagerAdapter;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.ViewGroup;
10 import android.widget.ImageView;
12 import com.bumptech.glide.Glide;
13 import com.bumptech.glide.load.engine.DiskCacheStrategy;
14 import com.moiseum.wolnelektury.R;
16 import java.util.List;
18 import io.reactivex.Observable;
19 import io.reactivex.subjects.PublishSubject;
22 * Created by Piotr Ostrowski on 06.08.2018.
24 public class NewsGalleryAdapter extends PagerAdapter {
26 private final LayoutInflater inflater;
27 private final List<String> galleryUrls;
29 private PublishSubject<Integer> pagerOnClickSubject = PublishSubject.create();
30 private View.OnClickListener pageClickListener = v -> {
31 int position = (int) v.getTag();
32 pagerOnClickSubject.onNext(position);
35 NewsGalleryAdapter(List<String> galleryUrls, Context context) {
36 this.galleryUrls = galleryUrls;
37 this.inflater = LayoutInflater.from(context);
41 @SuppressLint("InflateParams")
43 public Object instantiateItem(@NonNull ViewGroup container, int position) {
44 View view = inflater.inflate(R.layout.fragment_single_news_gallery_item, null);
45 view.setTag(position);
46 view.setOnClickListener(pageClickListener);
47 container.addView(view);
49 ImageView ivGallery = view.findViewById(R.id.tvGalleryImage);
50 Glide.with(view.getContext())
51 .load(galleryUrls.get(position))
52 .diskCacheStrategy(DiskCacheStrategy.ALL)
60 public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
61 View view = (View) object;
62 container.removeView(view);
66 public int getCount() {
67 return galleryUrls.size();
71 public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
72 return view == object;
75 Observable<Integer> getPageClickObservable() {
76 return pagerOnClickSubject.hide();