package com.znv.linkup.view.indicator; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import com.znv.linkup.core.config.RankCfg; import com.znv.linkup.view.indicator.Rank.RankHolder; /** * Rank数据的分页适配类 * * @author yzb * */ public class RankAdapter extends PagerAdapter { public RankAdapter(Context context, List<RankCfg> rankCfgs) { this.rankCfgs = rankCfgs; this.ranks = new Rank[rankCfgs.size()]; for (int i = 0; i < ranks.length; i++) { ranks[i] = new Rank(context, rankCfgs.get(i)); // 设置rank名称,更新时不会改变 updateRankInfo(i); } } /** * 根据rankCfgs更新RankCfg * * @param rankCfgs * 等级配置信息 */ public void changeRankCfgs(List<RankCfg> rankCfgs, boolean isInit) { this.rankCfgs = rankCfgs; for (int i = 0; i < ranks.length; i++) { ranks[i].changeRankCfg(rankCfgs.get(i), isInit); if (levelListener != null) { ranks[i].setLevelLister(levelListener); } // 设置rank名称,更新时不会改变 updateRankInfo(i); } } /** * 设置选择关卡的监听器 * * @param iSelectedLevel * 选择关卡操作接口 */ public void setLevelListener(Rank.ISelectedLevel levelListener) { this.levelListener = levelListener; for (int i = 0; i < ranks.length; i++) { ranks[i].setLevelLister(levelListener); } } @Override public int getCount() { return rankCfgs.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } @Override public Object instantiateItem(View arg0, int arg1) { View rankView = ranks[arg1].getRankView(); if (rankView.getParent() != null) { ((ViewPager) rankView.getParent()).removeView(rankView); } ((ViewPager) arg0).addView(rankView); return rankView; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView(ranks[arg1].getRankHolder().rankGrid); } /** * 更新rank信息 * * @param i * 页码 */ private void updateRankInfo(int i) { RankHolder holder = ranks[i].getRankHolder(); holder.tvTitle.setText(rankCfgs.get(i).getRankName()); } /** * 获取rank集合信息 * * @return rank集合信息 */ public Rank[] getRanks() { return ranks; } private Rank[] ranks = null; private Rank.ISelectedLevel levelListener = null; private List<RankCfg> rankCfgs = new ArrayList<RankCfg>(); }