package com.masterofcode.android.magreader.adapters; import java.util.List; import android.app.Activity; import android.content.Context; import android.text.Html; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.masterofcode.android.magreader.db.entity.FeedItem; import com.masterofcode.android.magreader.search.SearchResultItem; import com.masterofcode.android.magreader.utils.ApplicationUtils; import com.masterofcode.android.magreader.utils.ImageLoader; import com.masterofcode.android.magreader.utils.constants.Constants; import com.sandsmedia.apps.mobile.android.epub.lib.R; public class SearchResultsAdapter extends ArrayAdapter<SearchResultItem> { private Context context; private List<SearchResultItem> items; private FeedItem mFeedItem; int textViewResourceId; public ImageLoader imageLoader; private Activity activity; public SearchResultsAdapter(Context context, int textViewResourceId, List<SearchResultItem> items, Activity activity) { super(context, textViewResourceId, items); this.context = context; this.items = items; this.textViewResourceId = textViewResourceId; this.activity = activity; imageLoader = new ImageLoader(context, activity); } public static class ViewHolder{ public TextView title; public TextView pubDate; public TextView text; public TextView author; public ImageView thumbnail; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; ViewHolder holder; if (v == null) { LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(textViewResourceId, null); holder = new ViewHolder(); holder.title = (TextView) v.findViewById(R.id.item_title); holder.pubDate = (TextView) v.findViewById(R.id.pub_date); holder.text = (TextView) v.findViewById(R.id.text); holder.author = (TextView) v.findViewById(R.id.author); holder.thumbnail = (ImageView) v.findViewById(R.id.feed_thumbnail); v.setTag(holder); } else holder=(ViewHolder)v.getTag(); SearchResultItem mSearchResultItem = items.get(position); int resultType = mSearchResultItem.getSearchResultType(); if(resultType == Constants.SEARCH_TYPE_FEEDS) { mFeedItem = mSearchResultItem.getFeedItem(); if (mFeedItem != null) { populateFeedItem(mFeedItem, holder, imageLoader); } } else if(resultType == Constants.SEARCH_TYPE_LIBRARY) { populateLibraryItem(mSearchResultItem, holder, imageLoader); } return v; } private void populateLibraryItem(SearchResultItem mItem, ViewHolder holder, ImageLoader mImageLoader) { if (holder.title != null) holder.title.setText(mItem.getLibraryItem().magazine_title); if (holder.pubDate != null) holder.pubDate.setVisibility(View.GONE); if (holder.thumbnail != null) { String url = "file://" + mItem.getLibraryItem().magazine_cover_filepath; holder.thumbnail.setTag(url); mImageLoader.displayImage(url, holder.thumbnail); } if (holder.text != null) holder.text.setText(mItem.getLibraryItemTopicTitle()); } private void populateFeedItem(FeedItem mFeedItem, ViewHolder holder, ImageLoader mImageLoader){ if (holder.title != null) holder.title.setText(mFeedItem.title); if (holder.pubDate != null) holder.pubDate.setText(ApplicationUtils.formatDateForView(mFeedItem.publication_date)); if (holder.text != null) holder.text.setText(Html.fromHtml(mFeedItem.description)); if (holder.author != null) holder.author.setText("by " + mFeedItem.author); if (holder.thumbnail != null) holder.thumbnail.setTag(mFeedItem.thumbnailslink); if (holder.thumbnail != null && !TextUtils.isEmpty(mFeedItem.thumbnailslink)) { mImageLoader.displayImage(mFeedItem.thumbnailslink, holder.thumbnail); } else if (holder.thumbnail != null && TextUtils.isEmpty(mFeedItem.thumbnailslink)) holder.thumbnail.setImageResource(R.drawable.no_image); if (mFeedItem.isRead) { holder.title.setTextColor(context.getResources().getColor(R.color.light_blue_text)); } else { holder.title.setTextColor(context.getResources().getColor(R.color.dark_blue_text)); } if (holder.text != null) { if (mFeedItem.isRead) { holder.text.setTextColor(context.getResources().getColor(R.color.gray)); } else { holder.text.setTextColor(context.getResources().getColor(R.color.black)); } } } }