package com.lean56.andplug.adapter;
import android.support.v4.view.PagerAdapter;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
/**
* BaseViewPagerAdapter
* see {http://blog.csdn.net/maosidiaoxian/article/details/38661589}
*
* @author msdx
* @author Charles
*/
public abstract class BaseViewPagerAdapter <T> extends PagerAdapter {
protected List<T> mData;
private SparseArray<View> mViews;
public BaseViewPagerAdapter(List<T> data) {
mData = data;
mViews = new SparseArray<>(data.size());
}
@Override
public int getCount() {
return mData.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = mViews.get(position);
if (view == null) {
view = newView(position);
mViews.put(position, view);
}
container.addView(view);
return view;
}
protected abstract View newView(int position);
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mViews.get(position));
}
public T getItem(int position) {
return mData.get(position);
}
}