import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
PagerAdapter
至少实现
- public Object instantiateItem(ViewGroup container,int position)
建立指定位置的page
return: Object,代表new Page (不一定一定是view,任一可代表view的key值都可以)
- public void destroyItem(ViewGroup container,int position,Object object)
移除相关item
其中参数 object为 :the same object that was returned by 'instantiate(container,position);
- public abstract int getCount()
- public abstract boolean isViewFromObject(View view,Object object)
其中参数 object 同 1 中返回的object配对。
view: Page view to check for associate with object
object: object to check for associate with view
功能: 判断1 中返回的key(Object)与一个页面视图是否代表的是同一个视图(即他俩是否是对应的,是否表示同一个view)
其他非必须实现的:
- public void startUpdate(ViewGroup container)
- public void finishUpdate(ViewGroup container)
- public void notifyDataChanged()
- public int getItemPosition(Object object)
"called when the host view is attempting to determine if an item's position has changed"
return: POSITION_UNCHANGED: position of given item has not changed(默认不更新)
POSITON_NONE: the item is no longer present(会更新)
- public float getPageWidth(int position)
"return the proportional width of a given page as a percentage of the viewPager's measured width from(0.f~1.f)
占比!
- public void getOffscreenPageLimit(int limit) 默认为1
缓存个数,默认情况下,当前item的左一个及右一个缓存,其他的item会destroy
实例:
public class ViewPagerAdapterStyle extends PagerAdapter {
private List<Entity> tDataList = new ArrayList<Entity>();
public ViewPagerAdapterStyle(List<Entity> dataList) {
if (dataList != null) {
tDataList.addAll(dataList);
}
}
@Override
public int getCount() {
return tDataList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void startUpdate(ViewGroup container) {
super.startUpdate(container);
}
@Override
public void finishUpdate(ViewGroup container) {
super.finishUpdate(container);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// ((ViewPager) view).removeView(viewLists.get(position));
if (container instanceof ViewPager) {
(container).removeView((View) object);
}
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
// }
// return super.getItemPosition(object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
final Entity data = dataList.get(position);
ViewHolder_002 viewHolder_002 = null;
View item = container.findViewById(position);
if (item == null) {
item = ImageUtil.inflate(R.layout.container, null);
viewHolder_002 = new ViewHolder_002();
viewHolder_002.img = (SimpleDraweeView) item.findViewById(R.id.backImg);
item.setId(position);
item.setTag(viewHolder_002);
} else {
viewHolder_002 = (ViewHolder_002) item.getTag();
}
setBackImg(viewHolder_002.img, data.img);
if (container instanceof ViewPager) {
(container).addView(item);
}
setOnClickListener(item, data.jump);
return item;
}
//设置页卡每页显示item的数量
@Override
public float getPageWidth(int position) {
if (getCount() == 1) {
return 1;
} else {
return pageWidth;
}
}
}