package com.tiger.quicknews.wedget.viewimage.Animations;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import com.tiger.quicknews.wedget.viewimage.SliderTypes.BaseSliderView;
import java.util.ArrayList;
/**
* A slider adapter
*/
public class SliderAdapter extends PagerAdapter implements BaseSliderView.ImageLoadListener {
private final Context mContext;
private final ArrayList<BaseSliderView> mImageContents;
public SliderAdapter(Context context) {
mContext = context;
mImageContents = new ArrayList<BaseSliderView>();
}
public <T extends BaseSliderView> void addSlider(T slider) {
slider.setOnImageLoadListener(this);
mImageContents.add(slider);
notifyDataSetChanged();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
public <T extends BaseSliderView> void removeSlider(T slider) {
if (mImageContents.contains(slider)) {
mImageContents.remove(slider);
notifyDataSetChanged();
}
}
public void removeSliderAt(int position) {
if (mImageContents.size() < position) {
mImageContents.remove(position);
notifyDataSetChanged();
}
}
public void removeAllSliders() {
mImageContents.clear();
notifyDataSetChanged();
}
@Override
public int getCount() {
return mImageContents.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
BaseSliderView b = mImageContents.get(position);
View v = b.getView();
container.addView(v);
return v;
}
@Override
public void onStart(BaseSliderView target) {
}
/**
* When image download error, then remove.
*
* @param result
* @param target
*/
@Override
public void onEnd(boolean result, BaseSliderView target) {
if (target.isErrorDisappear() == false || result == true) {
return;
}
for (BaseSliderView slider : mImageContents) {
if (slider.equals(target)) {
removeSlider(target);
break;
}
}
}
}