package com.dl7.mvp.adapter;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.dl7.mvp.R;
import com.dl7.mvp.utils.ImageLoader;
import com.github.ybq.android.spinkit.SpinKitView;
import java.util.List;
import uk.co.senab.photoview.PhotoView;
import uk.co.senab.photoview.PhotoViewAttacher;
/**
* Created by long on 2016/9/28.
* 图集 Adapter
*/
public class PhotoSetAdapter extends PagerAdapter {
private List<String> mImgList;
private Context mContext;
private OnTapListener mTapListener;
public PhotoSetAdapter(Context context, List<String> imgList) {
this.mContext = context;
this.mImgList = imgList;
}
@Override
public int getCount() {
return mImgList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
View view = LayoutInflater.from(mContext).inflate(R.layout.adapter_photo_pager, null, false);
final PhotoView photo = (PhotoView) view.findViewById(R.id.iv_photo);
final SpinKitView loadingView = (SpinKitView) view.findViewById(R.id.loading_view);
final TextView tvReload = (TextView) view.findViewById(R.id.tv_reload);
final RequestListener<String, GlideDrawable> requestListener = new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
loadingView.setVisibility(View.GONE);
tvReload.setVisibility(View.VISIBLE);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
loadingView.setVisibility(View.GONE);
tvReload.setVisibility(View.GONE);
photo.setImageDrawable(resource);
return true;
}
};
ImageLoader.loadFitCenter(mContext, mImgList.get(position % mImgList.size()), photo, requestListener);
photo.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
@Override
public void onPhotoTap(View view, float x, float y) {
if (mTapListener != null) {
mTapListener.onPhotoClick();
}
}
});
tvReload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
tvReload.setVisibility(View.GONE);
loadingView.setVisibility(View.VISIBLE);
ImageLoader.loadFitCenter(mContext, mImgList.get(position % mImgList.size()), photo, requestListener);
}
});
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
public void setTapListener(OnTapListener listener) {
mTapListener = listener;
}
public interface OnTapListener {
void onPhotoClick();
}
}