package com.znv.linkup.view.indicator;
import com.znv.linkup.R;
import com.znv.linkup.core.config.LevelCfg;
import com.znv.linkup.core.config.RankCfg;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
/**
* 等级视图
*
* @author yzb
*
*/
public class Rank {
private RankCfg rankCfg = null;
private View rankView = null;
private LevelAdapter levels = null;
private RankHolder holder = new RankHolder();
public Rank(Context ctx, final RankCfg rankCfg) {
this.rankCfg = rankCfg;
LayoutInflater inflater = LayoutInflater.from(ctx);
rankView = inflater.inflate(R.layout.rank, null);
holder.tvTitle = (TextView) rankView.findViewById(R.id.rankName);
holder.rankGrid = (GridView) rankView.findViewById(R.id.rankGrid);
levels = new LevelAdapter(ctx, rankCfg.getLevelInfos());
holder.rankGrid.setAdapter(levels);
}
/**
* 根据等级配置更新
*
* @param rankCfg
* 等级配置
*/
public void changeRankCfg(RankCfg rankCfg, boolean isInit) {
this.rankCfg = rankCfg;
levels.changeLevelCfgs(rankCfg.getLevelInfos(), isInit);
}
/**
* 设置关卡选择的监听器
*
* @param levelListener
* 选择关卡操作接口
*/
public void setLevelLister(final ISelectedLevel levelListener) {
holder.rankGrid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
if (levelListener != null) {
levelListener.onSelectedLevel(rankCfg.getLevelInfos().get(arg2));
}
}
});
}
/**
* 获取rank的视图
*
* @return
*/
public View getRankView() {
return rankView;
}
/**
* 获取rank的缓存控件,用于更新,提高速度
*
* @return
*/
public RankHolder getRankHolder() {
return holder;
}
/**
* 获取与等级相关的levelAdapter
*
* @return
*/
public LevelAdapter getLevelAdapter() {
return levels;
}
/**
* 选择关卡时的处理接口
*
* @author yzb
*
*/
public interface ISelectedLevel {
void onSelectedLevel(LevelCfg levelCfg);
}
/**
* Rank控件缓存
*
* @author yzb
*
*/
public class RankHolder {
TextView tvTitle;
GridView rankGrid;
}
}