@Override public View getView(int position, View convertView, ViewGroup parent) { dbAdapter.open(); View vi = convertView; ViewHolder holder; Episode episode = episodes.get(position); int type = getItemWatchedType(episode.ID); if (convertView == null) { holder = new ViewHolder(); vi = inflater.inflate(R.layout.season_episode_item, null); holder.itemRow = (RelativeLayout) vi.findViewById(R.id.episode_row); holder.title = (TextView) vi.findViewById(R.id.episode_title); holder.image = (ImageView) vi.findViewById(R.id.episode_image); holder.episodeSeasonNumber = (TextView) vi.findViewById(R.id.episode_season_number); holder.firstAired = (TextView) vi.findViewById(R.id.episode_airdate); holder.clock = (ImageView) vi.findViewById(R.id.episode_clock); holder.watchedBtn = (CheckBox) vi.findViewById(R.id.season_episode_checkbox); holder.watchedBtn.setOnClickListener(this); holder.watchedBtn.setTag(position); vi.setTag(holder); vi.setOnCreateContextMenuListener(this); vi.setOnClickListener(this); } else { holder = (ViewHolder) vi.getTag(); ((ViewHolder) vi.getTag()).watchedBtn.setTag(position); } holder.title.setTag(position); holder.title.setText(episode.TITLE); // Log.d("SeasonAdapter", episode.IMAGE_URL); // Season number and episode number i.e. 'S01E10' String s = episode.SEASON_NUMBER < 10 ? "0" + episode.SEASON_NUMBER : episode.SEASON_NUMBER + ""; String e = episode.EPISODE_NUMBER < 10 ? "0" + episode.EPISODE_NUMBER : episode.EPISODE_NUMBER + ""; holder.episodeSeasonNumber.setText("S" + s + "E" + e); // Reminder Clock Calendar currentTime = Calendar.getInstance(); currentTime.add(Calendar.DAY_OF_MONTH, -1); Calendar episodeTime = getDate(episode); holder.clock.setImageResource( episodeTime == null ? R.drawable.clock_null : (getDate(episode).after(currentTime) ? R.drawable.clock : R.drawable.clock_null)); // CheckBox holder.watchedBtn.setClickable(dbAdapter.isSeriesFavorited(episode.SERIES_ID)); switch (type) { case TYPE_WATCHED: holder.watchedBtn.setChecked(true); break; case TYPE_NOT_WATCHED: holder.watchedBtn.setChecked(false); break; } holder.firstAired.setText(dateFormat(episode.FIRST_AIRED)); /** Image Stuff */ String imgUri = ServerUrls.getImageUrl(activity, ServerUrls.fixURL(episode.IMAGE_URL)); if (!MemoryCacheUtil.findCachedBitmapsForImageUri(imgUri, imageLoader.getMemoryCache()) .isEmpty()) { imageLoader.displayImage(imgUri, holder.image, this.optionsWithoutDelay); } else { imageLoader.displayImage(imgUri, holder.image, this.optionsWithDelay); } dbAdapter.close(); return vi; }