コード例 #1
0
  @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;
  }