package sj.keyboard.adpater; import android.support.v4.view.PagerAdapter; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import java.util.ArrayList; import sj.keyboard.data.PageEntity; import sj.keyboard.data.PageSetEntity; public class PageSetAdapter extends PagerAdapter { private final ArrayList<PageSetEntity> mPageSetEntityList = new ArrayList<>(); public ArrayList<PageSetEntity> getPageSetEntityList() { return mPageSetEntityList; } public int getPageSetStartPosition(PageSetEntity pageSetEntity) { if (pageSetEntity == null || TextUtils.isEmpty(pageSetEntity.getUuid())) { return 0; } int startPosition = 0; for (int i = 0; i < mPageSetEntityList.size(); i++) { if (i == mPageSetEntityList.size() - 1 && !pageSetEntity.getUuid().equals(mPageSetEntityList.get(i).getUuid())) { return 0; } if (pageSetEntity.getUuid().equals(mPageSetEntityList.get(i).getUuid())) { return startPosition; } startPosition += mPageSetEntityList.get(i).getPageCount(); } return startPosition; } public void add(View view) { add(mPageSetEntityList.size(), view); } public void add(int index, View view) { PageSetEntity pageSetEntity = new PageSetEntity.Builder() .addPageEntity(new PageEntity(view)) .setShowIndicator(false) .build(); mPageSetEntityList.add(index, pageSetEntity); } public void add(PageSetEntity pageSetEntity) { add(mPageSetEntityList.size(), pageSetEntity); } public void add(int index, PageSetEntity pageSetEntity) { if (pageSetEntity == null) { return; } mPageSetEntityList.add(index, pageSetEntity); } public PageSetEntity get(int position) { return mPageSetEntityList.get(position); } public void remove(int position) { mPageSetEntityList.remove(position); notifyData(); } public void notifyData() { } public PageEntity getPageEntity(int position) { for (PageSetEntity pageSetEntity : mPageSetEntityList) { if (pageSetEntity.getPageCount() > position) { return (PageEntity) pageSetEntity.getPageEntityList().get(position); } else { position -= pageSetEntity.getPageCount(); } } return null; } @Override public int getCount() { int count = 0; for (PageSetEntity pageSetEntity : mPageSetEntityList) { count += pageSetEntity.getPageCount(); } return count; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = getPageEntity(position).instantiateItem(container, position, null); if(view == null){ return null; } container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } }