package org.mtransit.android.ui.view; import java.util.ArrayList; import org.mtransit.android.R; import org.mtransit.android.commons.ColorUtils; import org.mtransit.android.commons.MTLog; import org.mtransit.android.commons.TimeUtils; import org.mtransit.android.commons.data.News; import android.content.Context; import android.view.View; import android.widget.TextView; public class POINewsViewController implements MTLog.Loggable { private static final String TAG = POINewsViewController.class.getSimpleName(); @Override public String getLogTag() { return TAG; } public static Integer getLayoutResId() { return R.layout.layout_poi_news; } public static void initViewHolder(View convertView) { NewsViewHolder holder = new NewsViewHolder(); holder.layout = convertView; holder.newsTv = (TextView) convertView.findViewById(R.id.newsText); holder.authorTv = (TextView) convertView.findViewById(R.id.author); holder.dateTv = (TextView) convertView.findViewById(R.id.date); convertView.setTag(holder); } public static void updateView(Context context, View view, ArrayList<News> news) { updateView(context, view, news == null || news.size() == 0 ? null : news.get(0)); } public static void updateView(Context context, View view, News news) { if (view == null) { return; } if (view.getTag() == null || !(view.getTag() instanceof NewsViewHolder)) { initViewHolder(view); } NewsViewHolder newsViewHolder = (NewsViewHolder) view.getTag(); updateView(context, newsViewHolder, news); } private static void updateView(Context context, NewsViewHolder newsViewHolder, News news) { if (news == null || newsViewHolder == null) { if (newsViewHolder != null) { newsViewHolder.layout.setVisibility(View.GONE); } return; } updateNewsView(context, newsViewHolder, news); } private static void updateNewsView(Context context, NewsViewHolder holder, News news) { if (holder != null) { if (news != null) { holder.authorTv.setText(context.getString(R.string.news_shared_on_and_author_and_source, news.getAuthorOneLine(), news.getSourceLabel())); if (news.hasColor()) { holder.authorTv.setTextColor(news.getColorInt()); } else { holder.authorTv.setTextColor(ColorUtils.getTextColorSecondary(context)); } holder.dateTv.setText(TimeUtils.formatRelativeTime(context, news.getCreatedAtInMs())); holder.newsTv.setText(news.getText()); if (news.hasColor()) { holder.newsTv.setLinkTextColor(news.getColorInt()); } else { holder.newsTv.setLinkTextColor(ColorUtils.getTextColorPrimary(context)); } holder.layout.setVisibility(View.VISIBLE); } else { holder.layout.setVisibility(View.GONE); } } } private static final class NewsViewHolder { View layout; TextView newsTv; TextView authorTv; TextView dateTv; } }