package com.sabdroidex.adapters; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.android.pinnedlist.PinnedHeaderListAdapter; import com.sabdroidex.R; import com.sabdroidex.data.sickbeard.FutureEpisode; import com.sabdroidex.data.sickbeard.FuturePeriod; import com.sabdroidex.utils.ImageUtils; import com.sabdroidex.utils.ImageWorker.ImageType; import java.util.Collection; public class ComingAdapter extends PinnedHeaderListAdapter { public ComingAdapter(Context context, FuturePeriod futurePeriod) { super(context); setPinnedPartitionHeadersEnabled(true); setDataSet(futurePeriod); } public void setDataSet(FuturePeriod futurePeriod) { Partition[] partitions = new Partition[4]; partitions[0] = new Partition(false, futurePeriod.getMissedTitle()); partitions[0].setElements(futurePeriod.getMissed()); partitions[1] = new Partition(false, futurePeriod.getTodayTitle()); partitions[1].setElements(futurePeriod.getToday()); partitions[2] = new Partition(false, futurePeriod.getSoonTitle()); partitions[2].setElements(futurePeriod.getSoon()); partitions[3] = new Partition(false, futurePeriod.getLaterTitle()); partitions[3].setElements(futurePeriod.getLater()); setPartitions(partitions); } @Override public boolean isEnabled(int position) { return false; } @Override protected View newHeaderView(Context context, int partition, Collection<?> elements, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(context); return inflater.inflate(R.layout.list_section, null); } @Override protected void bindHeaderView(View view, int partition, Collection<?> elements) { TextView headerText = (TextView) view.findViewById(R.id.title); headerText.setText(getPartition(partition).getHeader()); } @Override protected View newView(Context context, int partition, Object element, int position, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(context); return inflater.inflate(R.layout.list_item_coming, null); } @Override protected void bindView(View v, int partition, Object element, int position) { ShowsListItem comingItem; if (v.getTag() == null) { comingItem = new ShowsListItem(); comingItem.banner = (ImageView) v.findViewById(R.id.coming_show_banner); comingItem.next = (TextView) v.findViewById(R.id.coming_next_episode); comingItem.airDate = (TextView) v.findViewById(R.id.coming_air_date); comingItem.airs = (TextView) v.findViewById(R.id.coming_airs); } else { comingItem = (ShowsListItem) v.getTag(); } FutureEpisode futureEpisode = (FutureEpisode) element; String imageKey = ImageType.SHOW_BANNER.name() + futureEpisode.getTvdbId(); ImageUtils.getImageWorker().loadImage(comingItem.banner, ImageType.SHOW_BANNER, imageKey, futureEpisode.getTvdbId(), futureEpisode.getShowName()); String nextDescriptor = String.format("%02dx%02d", futureEpisode.getSeason(), futureEpisode.getEpisode()); String next = nextDescriptor + " - " + futureEpisode.getEpName(); String airs = String.format("%s %s [%s]", futureEpisode.getAirs(), futureEpisode.getNetwork(), futureEpisode.getQuality()); comingItem.next.setText(next); comingItem.airDate.setText(futureEpisode.getAirDate()); comingItem.airs.setText(airs); v.setId(position); v.setTag(comingItem); } @Override public View getPinnedHeaderView(int viewIndex, View convertView, ViewGroup parent) { LayoutInflater inflater = LayoutInflater.from(getContext()); View view = inflater.inflate(R.layout.list_section, parent, false); view.setFocusable(false); view.setEnabled(false); bindHeaderView(view, viewIndex, null); return view; } /** * This inner class is used to represent the content of a list item. */ class ShowsListItem { ImageView banner; TextView next; TextView airDate; TextView airs; } }