package edu.mit.mitmobile2.news.view; import java.util.List; import com.squareup.picasso.Picasso; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.news.beans.NewsImage; import edu.mit.mitmobile2.news.beans.NewsStory; import edu.mit.mitmobile2.news.net.NewsDownloader; import android.content.Context; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class NewsArrayAdapter extends ArrayAdapter<NewsStory>{ NewsDownloader np; public NewsArrayAdapter(Context context, int textViewResourceId){ super(context, textViewResourceId); np = NewsDownloader.getInstance(context); } public NewsArrayAdapter(Context context, int textViewResourceId, List<NewsStory> news) { super(context, textViewResourceId, news); np = NewsDownloader.getInstance(context); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if(this.getCount()>0){ NewsStory story = (NewsStory) getItem(position); if(story!=null){ TextView ttView = null; TextView deckTtView = null; if(story.getId()!=null && story.getId().equals("header")){ view = LayoutInflater.from(getContext()).inflate(R.layout.news_row_header, null); TextView ttv = (TextView) view.findViewById(R.id.newsRowMoreTV); ttv.setText(story.getDekText()); ttv.requestLayout(); return view; }else if(story.getId()!=null && story.getId().equals("more")){ view = LayoutInflater.from(getContext()).inflate(R.layout.news_row_more, null); TextView ttv = (TextView) view.findViewById(R.id.newsRowMoreTV); ttv.setText(story.getDekText()); ttv.requestLayout(); return view; }else if(story.getCategory()!=null && story.getCategory().getId().equals("in_the_media")){ view = LayoutInflater.from(getContext()).inflate(R.layout.news_row_in_media, null); deckTtView = (TextView) view.findViewById(R.id.newsRowDeckInMediaTV); NewsImage ni = story.getCoverImage(); if(ni!=null && !ni.getRepresentations().isEmpty()){ ImageView imageView = (ImageView) view.findViewById(R.id.newsRowIV); DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); int maxwidth = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 34, metrics); int maxheight = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 175, metrics); Picasso.with(getContext()).load(ni.getRepresentationBestFitByWidthOrHeight(maxwidth,maxheight).getUrl()).into(imageView); } }else{ view = LayoutInflater.from(getContext()).inflate(R.layout.news_row, null); ttView = (TextView) view.findViewById(R.id.newsRowTV); ttView.setText(story.getTitleText()); ttView.requestLayout(); deckTtView = (TextView) view.findViewById(R.id.newsRowDeckTV); NewsImage ni = story.getCoverImage(); if(ni!=null && !ni.getRepresentations().isEmpty()){ ImageView imageView = (ImageView) view.findViewById(R.id.newsRowIV); Picasso.with(getContext()).load(ni.getSmallestRepresentationsByDiagonal().getUrl()).into(imageView); } } view.setTag(Integer.valueOf(story.getId())); deckTtView.setText(story.getDekText()); deckTtView.requestLayout(); } } if(view==null){ view = LayoutInflater.from(getContext()).inflate(R.layout.news_row, null); } return view; } }