Added Android code
[wl-app.git] / Android / app / src / main / java / com / moiseum / wolnelektury / view / news / single / NewsGalleryAdapter.java
1 package com.moiseum.wolnelektury.view.news.single;
2
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;
11
12 import com.bumptech.glide.Glide;
13 import com.bumptech.glide.load.engine.DiskCacheStrategy;
14 import com.moiseum.wolnelektury.R;
15
16 import java.util.List;
17
18 import io.reactivex.Observable;
19 import io.reactivex.subjects.PublishSubject;
20
21 /**
22  * Created by Piotr Ostrowski on 06.08.2018.
23  */
24 public class NewsGalleryAdapter extends PagerAdapter {
25
26         private final LayoutInflater inflater;
27         private final List<String> galleryUrls;
28
29         private PublishSubject<Integer> pagerOnClickSubject = PublishSubject.create();
30         private View.OnClickListener pageClickListener = v -> {
31                 int position = (int) v.getTag();
32                 pagerOnClickSubject.onNext(position);
33         };
34
35         NewsGalleryAdapter(List<String> galleryUrls, Context context) {
36                 this.galleryUrls = galleryUrls;
37                 this.inflater = LayoutInflater.from(context);
38         }
39
40         @NonNull
41         @SuppressLint("InflateParams")
42         @Override
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);
48
49                 ImageView ivGallery = view.findViewById(R.id.tvGalleryImage);
50                 Glide.with(view.getContext())
51                                 .load(galleryUrls.get(position))
52                                 .diskCacheStrategy(DiskCacheStrategy.ALL)
53                                 .dontTransform()
54                                 .into(ivGallery);
55
56                 return view;
57         }
58
59         @Override
60         public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
61                 View view = (View) object;
62                 container.removeView(view);
63         }
64
65         @Override
66         public int getCount() {
67                 return galleryUrls.size();
68         }
69
70         @Override
71         public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
72                 return view == object;
73         }
74
75         Observable<Integer> getPageClickObservable() {
76                 return pagerOnClickSubject.hide();
77         }
78 }