package com.thebluealliance.androidclient.listitems; import com.thebluealliance.androidclient.R; import com.thebluealliance.androidclient.datafeed.APICache; import com.thebluealliance.androidclient.helpers.EventTeamHelper; import com.thebluealliance.androidclient.listeners.EventTeamClickListener; import com.thebluealliance.androidclient.models.Team; import com.thebluealliance.api.model.IAwardRecipient; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import java.util.List; import java.util.Map; public class CardedAwardListElement extends ListElement { public final String mAwardName; public final String mEventKey; public final String mSelectedTeamNum; public final List<IAwardRecipient> mAwardWinners; private final Map<String, Team> mAwardTeams; private final APICache mDatafeed; public CardedAwardListElement(APICache datafeed, String name, String eventKey, List<IAwardRecipient> recipientList, Map<String, Team> teams, String selectedTeamKey) { super(); mDatafeed = datafeed; this.mAwardName = name; this.mEventKey = eventKey; this.mAwardWinners = recipientList; this.mAwardTeams = teams; this.mSelectedTeamNum = (selectedTeamKey == null || selectedTeamKey.length() < 4) ? "" : selectedTeamKey.substring(3); } @Override public View getView(Context context, LayoutInflater inflater, View convertView) { ViewHolder holder; if (convertView == null || !(convertView.getTag() instanceof ViewHolder)) { convertView = inflater.inflate(R.layout.list_item_carded_award, null); holder = new ViewHolder(); holder.awardName = (TextView) convertView.findViewById(R.id.award_name); holder.awardRecipients = (LinearLayout) convertView.findViewById(R.id.award_recipients); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); holder.awardRecipients.removeAllViews(); } holder.awardName.setText(mAwardName); for (IAwardRecipient awardWinner : mAwardWinners) { View winnerView = inflater.inflate(R.layout.list_item_award_recipient, null); String teamNumber; String awardee; if (awardWinner.getTeamKey() == null) { teamNumber = ""; } else { teamNumber = awardWinner.getTeamKey().substring(3); if (!mSelectedTeamNum.equals(teamNumber)) { winnerView.setOnClickListener(new EventTeamClickListener(context)); } else { winnerView.setBackgroundColor(context.getResources().getColor(android.R.color.transparent)); // disable touch feedback } winnerView.setTag(EventTeamHelper.generateKey(mEventKey, "frc" + teamNumber)); } if (awardWinner.getAwardee() == null) { awardee = ""; } else { awardee = awardWinner.getAwardee(); } String awardLine1 = ""; String awardLine2 = ""; if (teamNumber.isEmpty()) { if (!awardee.isEmpty()) { awardLine1 = awardee; } } else { Team team; if (mAwardTeams == null) { team = mDatafeed.fetchTeam("frc" + teamNumber).toBlocking().first(); } else { team = mAwardTeams.get("frc" + teamNumber); } String nickname; if (team == null) { nickname = "Team " + teamNumber; } else { nickname = team.getNickname(); } if ((awardee == null || awardee.isEmpty()) && (nickname == null || nickname.isEmpty())) { awardLine1 = teamNumber; awardLine2 = "Team " + teamNumber; } else if (awardee == null || awardee.isEmpty()) { awardLine1 = teamNumber; awardLine2 = nickname; } else { awardLine1 = awardee; awardLine2 = nickname; } } TextView winnerLine1 = (TextView) winnerView.findViewById(R.id.winner_line_1); winnerLine1.setText(awardLine1); TextView winnerLine2 = (TextView) winnerView.findViewById(R.id.winner_line_2); if (awardLine2.isEmpty()) { winnerLine2.setVisibility(View.GONE); } else { winnerLine2.setText(awardLine2); } holder.awardRecipients.addView(winnerView); } return convertView; } private static class ViewHolder { TextView awardName; LinearLayout awardRecipients; } }