summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/adapter/DefaultFeedItemlistAdapter.java
blob: e384ecffcb12df95a86f72be1435816bd0de0fde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package de.danoeh.antennapod.adapter;

import android.content.Context;
import android.content.res.TypedArray;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.MediaType;
import de.danoeh.antennapod.util.Converter;

public class DefaultFeedItemlistAdapter extends BaseAdapter {

	ItemAccess itemAccess;
	private Context context;

	public DefaultFeedItemlistAdapter(Context context, ItemAccess itemAccess) {
		super();
		this.context = context;
		if (itemAccess == null) {
			throw new IllegalArgumentException("itemAccess must not be null");
		}
		this.itemAccess = itemAccess;
	}

	@Override
	public int getCount() {
		return itemAccess.getCount();

	}

	@Override
	public long getItemId(int position) {
		return position;
	}

	@Override
	public FeedItem getItem(int position) {
		return itemAccess.getItem(position);
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		Holder holder;
		final FeedItem item = getItem(position);

		if (convertView == null) {
			holder = new Holder();
			LayoutInflater inflater = (LayoutInflater) context
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = inflater.inflate(R.layout.default_feeditemlist_item, null);
			holder.title = (TextView) convertView
					.findViewById(R.id.txtvItemname);
			holder.lenSize = (TextView) convertView
					.findViewById(R.id.txtvLenSize);
			
			holder.published = (TextView) convertView
					.findViewById(R.id.txtvPublished);
			holder.type = (ImageView) convertView.findViewById(R.id.imgvType);
			convertView.setTag(holder);
			
		} else {
			holder = (Holder) convertView.getTag();
		}
		if (!(getItemViewType(position) == Adapter.IGNORE_ITEM_VIEW_TYPE)) {
			convertView.setVisibility(View.VISIBLE);
			holder.title.setText(item.getTitle());
			holder.published.setText(convertView.getResources().getString(
					R.string.published_prefix)
					+ DateUtils.getRelativeTimeSpanString(
							item.getPubDate().getTime(),
							System.currentTimeMillis(), 0, 0));
			if (item.getMedia() == null) {
				holder.type.setVisibility(View.GONE);
				holder.lenSize.setVisibility(View.GONE);
			} else {
				holder.lenSize.setVisibility(View.VISIBLE);
				holder.lenSize.setText(convertView.getResources().getString(
						R.string.size_prefix)
						+ Converter.byteToString(item.getMedia().getSize()));

				TypedArray typeDrawables = context
						.obtainStyledAttributes(new int[] { R.attr.type_audio,
								R.attr.type_video });
				MediaType mediaType = item.getMedia().getMediaType();
				if (mediaType == MediaType.AUDIO) {
					holder.type.setImageDrawable(typeDrawables.getDrawable(0));
                    holder.type.setContentDescription(context.getString(R.string.media_type_audio_label));
					holder.type.setVisibility(View.VISIBLE);
				} else if (mediaType == MediaType.VIDEO) {
					holder.type.setImageDrawable(typeDrawables.getDrawable(1));
                    holder.type.setContentDescription(context.getString(R.string.media_type_video_label));
                    holder.type.setVisibility(View.VISIBLE);
				} else {
					holder.type.setImageBitmap(null);
					holder.type.setVisibility(View.GONE);
				}
			}

		} else {
			convertView.setVisibility(View.GONE);
		}
		return convertView;
	}

	protected static class Holder {
		TextView title;
		TextView published;
		TextView lenSize;
		ImageView type;

	}

	public static interface ItemAccess {
		int getCount();

		FeedItem getItem(int position);
	}

	protected Context getContext() {
		return context;
	}
}