X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff..269195b3729c1bdc22e9053ee4ebca667ea8549d:/Android/app/src/main/java/com/moiseum/wolnelektury/view/news/single/NewsGalleryAdapter.java diff --git a/Android/app/src/main/java/com/moiseum/wolnelektury/view/news/single/NewsGalleryAdapter.java b/Android/app/src/main/java/com/moiseum/wolnelektury/view/news/single/NewsGalleryAdapter.java new file mode 100644 index 0000000..a5dff6a --- /dev/null +++ b/Android/app/src/main/java/com/moiseum/wolnelektury/view/news/single/NewsGalleryAdapter.java @@ -0,0 +1,78 @@ +package com.moiseum.wolnelektury.view.news.single; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.support.annotation.NonNull; +import android.support.v4.view.PagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.moiseum.wolnelektury.R; + +import java.util.List; + +import io.reactivex.Observable; +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Piotr Ostrowski on 06.08.2018. + */ +public class NewsGalleryAdapter extends PagerAdapter { + + private final LayoutInflater inflater; + private final List galleryUrls; + + private PublishSubject pagerOnClickSubject = PublishSubject.create(); + private View.OnClickListener pageClickListener = v -> { + int position = (int) v.getTag(); + pagerOnClickSubject.onNext(position); + }; + + NewsGalleryAdapter(List galleryUrls, Context context) { + this.galleryUrls = galleryUrls; + this.inflater = LayoutInflater.from(context); + } + + @NonNull + @SuppressLint("InflateParams") + @Override + public Object instantiateItem(@NonNull ViewGroup container, int position) { + View view = inflater.inflate(R.layout.fragment_single_news_gallery_item, null); + view.setTag(position); + view.setOnClickListener(pageClickListener); + container.addView(view); + + ImageView ivGallery = view.findViewById(R.id.tvGalleryImage); + Glide.with(view.getContext()) + .load(galleryUrls.get(position)) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .dontTransform() + .into(ivGallery); + + return view; + } + + @Override + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { + View view = (View) object; + container.removeView(view); + } + + @Override + public int getCount() { + return galleryUrls.size(); + } + + @Override + public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { + return view == object; + } + + Observable getPageClickObservable() { + return pagerOnClickSubject.hide(); + } +}