package com.thebluealliance.androidclient.listitems; import com.thebluealliance.androidclient.R; import com.thebluealliance.androidclient.helpers.EventTeamHelper; import com.thebluealliance.androidclient.interfaces.RenderableModel; import com.thebluealliance.androidclient.listeners.EventTeamClickListener; import com.thebluealliance.androidclient.listeners.PlayoffAdvancementClickListener; import com.thebluealliance.androidclient.renderers.ModelRendererSupplier; import com.thebluealliance.androidclient.types.PlayoffAdvancement; import android.content.Context; import android.text.SpannableString; import android.text.style.UnderlineSpan; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import java.util.List; public class AllianceListElement extends ListElement implements RenderableModel { public final int number; public final PlayoffAdvancement advancement; public final List<String> teams; public final String eventKey; public final String allianceName; public AllianceListElement(String eventKey, String name, int number, List<String> teams, PlayoffAdvancement advancement) { if (teams.size() < 2) throw new IllegalArgumentException("Alliances have >= 2 members"); this.number = number; this.advancement = advancement; this.teams = teams; this.eventKey = eventKey; this.allianceName = name; } @Override public View getView(Context c, LayoutInflater inflater, View convertView) { ViewHolder holder; if (convertView == null || !(convertView.getTag() instanceof ViewHolder)) { convertView = inflater.inflate(R.layout.list_item_alliance, null, false); holder = new ViewHolder(); holder.allianceName = (TextView) convertView.findViewById(R.id.alliance_name); holder.advancement = (TextView) convertView.findViewById(R.id.alliance_advancement); holder.memberOne = (TextView) convertView.findViewById(R.id.member_one); holder.memberTwo = (TextView) convertView.findViewById(R.id.member_two); holder.memberThree = (TextView) convertView.findViewById(R.id.member_three); holder.memberFour = (TextView) convertView.findViewById(R.id.member_four); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.allianceName.setText(allianceName != null ? allianceName : String.format(c.getString(R.string.alliance_title), number)); if (advancement != PlayoffAdvancement.NONE) { holder.advancement.setVisibility(View.VISIBLE); holder.advancement.setText(advancement.getAbbreviation()); holder.advancement.setClickable(true); holder.advancement.setOnClickListener(new PlayoffAdvancementClickListener(c, advancement)); } else { holder.advancement.setVisibility(View.VISIBLE); holder.advancement.setText(""); holder.advancement.setOnClickListener(null); holder.advancement.setClickable(false); } EventTeamClickListener listener = new EventTeamClickListener(c); String team1Key = teams.get(0); SpannableString underLine = new SpannableString(team1Key.substring(3)); underLine.setSpan(new UnderlineSpan(), 0, underLine.length(), 0); holder.memberOne.setText(underLine); holder.memberOne.setTag(EventTeamHelper.generateKey(eventKey, team1Key)); holder.memberOne.setOnClickListener(listener); holder.memberOne.setOnLongClickListener(listener); String team2Key = teams.get(1); holder.memberTwo.setText(team2Key.substring(3)); holder.memberTwo.setTag(EventTeamHelper.generateKey(eventKey, team2Key)); holder.memberTwo.setOnClickListener(listener); holder.memberTwo.setOnLongClickListener(listener); if (teams.size() >= 3) { String team3Key = teams.get(2); holder.memberThree.setText(team3Key.substring(3)); holder.memberThree.setTag(EventTeamHelper.generateKey(eventKey, team3Key)); holder.memberThree.setVisibility(View.VISIBLE); holder.memberThree.setOnClickListener(listener); holder.memberThree.setOnLongClickListener(listener); } if (teams.size() >= 4) { String team4Key = teams.get(3); holder.memberFour.setText(team4Key.substring(3)); holder.memberFour.setTag(EventTeamHelper.generateKey(eventKey, team4Key)); holder.memberFour.setVisibility(View.VISIBLE); holder.memberFour.setOnClickListener(listener); holder.memberFour.setOnLongClickListener(listener); } return convertView; } private static class ViewHolder { TextView allianceName; TextView advancement; TextView memberOne; TextView memberTwo; TextView memberThree; TextView memberFour; } @Override public ListElement render(ModelRendererSupplier supplier) { return this; } @Override public boolean equals(Object o) { if (!(o instanceof AllianceListElement)) { return false; } AllianceListElement other = (AllianceListElement) o; return number == other.number && teams.equals(other.teams) && eventKey.equals(other.eventKey); } }