package com.hupu.games.adapter; import java.util.ArrayList; import android.content.Context; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.hupu.games.HuPuApp; import com.hupu.games.R; import com.hupu.games.data.game.basketball.BasketBallGamesBlock; import com.hupu.games.data.game.basketball.BasketballGameEntity; import com.koushikdutta.urlimageviewhelper.UrlImageViewHelper; import com.pyj.common.MyUtility; public class BasketBallGamesListAdapter extends XSectionedBaseAdapter { private ArrayList<BasketBallGamesBlock> mListGames; private LayoutInflater mInflater; private OnClickListener mClick; /** 0 nba,1 cba */ private int mode; private String STR_FORMAT = "%s<font color='red'>(%d)</font>"; public BasketBallGamesListAdapter(Context context, OnClickListener c, int m) { mInflater = LayoutInflater.from(context); mClick = c; mode = m; } public void clear() { if (mListGames != null) mListGames.clear(); } @Override public BasketballGameEntity getItem(int section, int position) { if (section == -1 || position == -1) return null; if (mListGames != null) { // 这里有个风险点,就是突然赛程中加入一场比赛的情况下 会出现奔溃 try catch 一下 try { return mListGames.get(section).mGames.get(position); } catch (Exception e) { // TODO: handle exception } } return null; } public BasketballGameEntity getItemAt(int pos) { if (mListGames != null) { int section = getSectionForPosition(pos); int child = getPositionInSectionForPosition(pos); return getItem(section, child); } return null; } @Override public long getItemId(int section, int position) { return 0; } @Override public int getSectionCount() { if (mListGames != null) return mListGames.size(); return 0; } @Override public int getCountForSection(int section) { if (mListGames != null) return mListGames.get(section).mGames.size(); return 0; } @Override public View getItemView(int section, int position, View convertView, ViewGroup parent) { BasketballGameEntity entity = getItem(section, position); Holder holder = null; if (convertView == null) { convertView = initItemView(new Holder()); } holder = (Holder) convertView.getTag(); if (entity != null) { if (entity.home_series >= 0) { // /**季后赛大比分*/ holder.txtLeftName.setText(Html.fromHtml(String.format( STR_FORMAT, entity.str_home_name, entity.home_series))); holder.txtRightName.setText(Html.fromHtml(String.format( STR_FORMAT, entity.str_away_name, entity.away_series))); } else { holder.txtLeftName.setText(entity.str_home_name); holder.txtRightName.setText(entity.str_away_name); } // 新增根据LOGO_URL设置球队logo if (entity.home_logo == null) setIcon(holder.imgLeftLogo, entity.i_home_tid); else UrlImageViewHelper.setUrlDrawable(holder.imgLeftLogo, entity.home_logo, R.drawable.bg_home_nologo1); if (entity.away_logo == null) setIcon(holder.imgRightLogo, entity.i_away_tid); else UrlImageViewHelper.setUrlDrawable(holder.imgRightLogo, entity.away_logo, R.drawable.bg_home_nologo1); updateViewByStatus(entity, holder, position); } return convertView; } private View initItemView(Holder holder) { // View convertView = mInflater.inflate(R.layout.item_nba_child, null); holder = new Holder(); holder.txtLeftName = (TextView) convertView .findViewById(R.id.txt_team_left); holder.txtRightName = (TextView) convertView .findViewById(R.id.txt_team_right); holder.imgLeftLogo = (ImageView) convertView .findViewById(R.id.img_team_left); holder.imgRightLogo = (ImageView) convertView .findViewById(R.id.img_team_right); holder.txtProccess = (TextView) convertView .findViewById(R.id.txt_proccess); holder.txtScore = (TextView) convertView.findViewById(R.id.txt_score); // holder.followLayout = convertView.findViewById(R.id.layout_follow); holder.imgFollow = (ImageView) convertView .findViewById(R.id.img_follow); holder.imgLive = (ImageView) convertView.findViewById(R.id.img_live); convertView.setTag(holder); return convertView; } private void updateViewByStatus(BasketballGameEntity entity, Holder holder, int position) { byte status = getStatus(entity.byt_status); if (status == STATUS_WAITING) { // 等待开始 holder.txtScore.setVisibility(View.GONE); holder.imgFollow.setVisibility(View.VISIBLE); if (entity.i_live < 1) holder.imgLive.setVisibility(View.INVISIBLE); else if (entity.i_live == 1) { holder.imgLive.setVisibility(View.VISIBLE); if (entity.casino == 1) { holder.imgLive.setImageResource(R.drawable.icon_guess_up); } else { holder.imgLive.setImageResource(R.drawable.icon_live_up); } } holder.txtProccess.setText(MyUtility .getStartTime(entity.l_begin_time * 1000)); holder.imgFollow.setTag(entity); holder.imgFollow.setOnClickListener(mClick); if (entity.bFollow == 1) { holder.imgFollow.setImageResource(R.drawable.btn_dated); } else { holder.imgFollow.setImageResource(R.drawable.btn_date); } } else if (status == STATUS_START) { // 已经开始 holder.txtScore.setVisibility(View.VISIBLE); // holder.imgFollow.setVisibility(View.GONE); if (entity.i_live < 1) holder.imgLive.setVisibility(View.INVISIBLE); else if (entity.i_live == 1) { holder.imgLive.setVisibility(View.VISIBLE); if (entity.casino == 1) { holder.imgLive.setImageResource(R.drawable.icon_guess_down); } else { holder.imgLive.setImageResource(R.drawable.icon_live_down); } } setSore(holder.txtScore, entity.i_home_score, entity.i_away_score); if (entity.str_process != null) holder.txtProccess.setText(entity.str_process); } else { // 结束 holder.imgFollow.setVisibility(View.GONE); holder.txtScore.setVisibility(View.VISIBLE); holder.imgLive.setVisibility(View.INVISIBLE); setSore(holder.txtScore, entity.i_home_score, entity.i_away_score); if (entity.str_process != null) holder.txtProccess.setText(entity.str_process); } } @Override public View getSectionHeaderView(int section, View convertView, ViewGroup parent) { Header header = null; if (convertView == null) { convertView = mInflater .inflate(R.layout.item_football_header, null); header = new Header(); header.txtDate = (TextView) convertView.findViewById(R.id.txt_date); header.txtRound = (TextView) convertView .findViewById(R.id.txt_round); convertView.setTag(header); } else header = (Header) convertView.getTag(); if (mListGames != null) { header.txtDate.setText(mListGames.get(section).mDateBlock); header.txtRound.setText(mListGames.get(section).type_block); } return convertView; } public void setData(ArrayList<BasketBallGamesBlock> gameList) { mListGames = gameList; notifyDataSetChanged(); } private void setIcon(ImageView tv, int res) { tv.setImageResource(HuPuApp.getTeamData(res).i_logo_small); } private void setSore(TextView tv, int homeScore, int awayScore) { tv.setText(homeScore + "-" + awayScore); } final static byte STATUS_START = 1; final static byte STATUS_WAITING = 2; final static byte STATUS_END = 3; private byte getStatus(byte status) { if (mode == 0) { if (status == BasketballGameEntity.STATUS_WAITING) return STATUS_WAITING; else if (status == BasketballGameEntity.STATUS_START) return STATUS_START; else return STATUS_END; } else { if (status == BasketballGameEntity.CBA_STATUS_WAITING) return STATUS_WAITING; else if (status == BasketballGameEntity.CBA_STATUS_START) return STATUS_START; else return STATUS_END; } } static class Holder { TextView txtLeftName; TextView txtRightName; ImageView imgLeftLogo; ImageView imgRightLogo; TextView txtProccess; TextView txtScore; ImageView imgFollow; ImageView imgLive; // View followLayout; } static class Header { TextView txtDate; TextView txtRound; } }