package com.rickstart.moviefriend.ui.adapters; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.RatingBar; import android.widget.TextView; import com.rickstart.moviefriend.R; import com.rickstart.moviefriend.logger.Log; import com.rickstart.moviefriend.models.Movie; import com.rickstart.moviefriend.util.ImageFetcher; import java.util.ArrayList; import java.util.List; /** * Created by Rick on 26/11/14. */ public class MovieAdapter extends ArrayAdapter<Movie> { private final Context mContext; private int mItemHeight = 0; private int mNumColumns = 0; private int mActionBarHeight = 0; private GridView.LayoutParams mImageViewLayoutParams; private ImageFetcher mImageFetcher; private static int imageWidth; private List<Movie> movies= new ArrayList<Movie>(); public MovieAdapter(Context context,int imageWidth,List<Movie> movies,ImageFetcher mImageFetcher ) { super(context , R.layout.item_grid_movie ,movies); this.mContext = context; this.movies = movies; this.imageWidth = imageWidth; this.mImageFetcher = mImageFetcher; /*mImageViewLayoutParams = new GridView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); // Calculate ActionBar height TypedValue tv = new TypedValue(); if (context.getTheme().resolveAttribute( android.R.attr.actionBarSize, tv, true)) { mActionBarHeight = TypedValue.complexToDimensionPixelSize( tv.data, context.getResources().getDisplayMetrics()); }*/ } /* @Override public int getCount() { // If columns have yet to be determined, return no items if (getNumColumns() == 0) { return 0; } // Size + number of columns for top empty row return movies.size() + mNumColumns; } @Override public Movie getItem(int position) { return position < mNumColumns ? null : movies.get(position - mNumColumns); } @Override public long getItemId(int position) { return position < mNumColumns ? 0 : position - mNumColumns; } @Override public int getViewTypeCount() { // Two types of views, the normal ImageView and the top row of empty views return 2; } @Override public int getItemViewType(int position) { return (position < mNumColumns) ? 1 : 0; } @Override public boolean hasStableIds() { return true; }*/ @Override public View getView(int position, View convertView, ViewGroup container) { Log.e("TEST_ADAP","1"); LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); //BEGIN_INCLUDE(load_gridview_item) // First check if this is the top row /*if (position < mNumColumns) { if (convertView == null) { convertView = new View(mContext); } // Set empty view with height of ActionBar convertView.setLayoutParams(new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, mActionBarHeight)); return convertView; }*/ // Now handle the main ImageView thumbnails ImageView imageView; ViewHolder viewHolder = null; if (convertView == null) { // if it's not recycled, instantiate and initialize convertView = inflater.inflate(R.layout.item_grid_movie, null); viewHolder = new ViewHolder(); viewHolder.poster = (ImageView) convertView.findViewById(R.id.poster); viewHolder.textView = (TextView) convertView.findViewById(R.id.tv_titulo); viewHolder.rating=(RatingBar) convertView.findViewById(R.id.rb_score); viewHolder.position = position; convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag(); } double rating; Movie movie = movies.get(position); rating= movie.getRating()*0.01*5; viewHolder.imageURL = movie.getPoster(); viewHolder.textView.setText(movie.getTitle()); viewHolder.rating.setRating((float) rating); Log.e("TEST_ADAP",movies.get(position).getPoster()); mImageFetcher.loadImage(movies.get(position).getPoster(), viewHolder.poster); return convertView; //END_INCLUDE(load_gridview_item) } /** * Sets the item height. Useful for when we know the column width so the height can be set * to match. * * @param height */ public void setItemHeight(int height) { if (height == mItemHeight) { return; } mItemHeight = height; mImageViewLayoutParams = new GridView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mItemHeight); mImageFetcher.setImageSize(height); notifyDataSetChanged(); } public void setNumColumns(int numColumns) { mNumColumns = numColumns; } public int getNumColumns() { return mNumColumns; } static class ViewHolder { int position; ImageView poster; TextView textView; Bitmap bitmap; String imageURL; String title; RatingBar rating; } /* @Override public View getView(final int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); ViewHolder viewHolder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.item_grid_movie, null); viewHolder = new ViewHolder(); viewHolder.poster = (ImageView) convertView.findViewById(R.id.poster); viewHolder.textView = (TextView) convertView.findViewById(R.id.tv_titulo); viewHolder.rating=(RatingBar) convertView.findViewById(R.id.rb_score); viewHolder.position = position; convertView.setTag(viewHolder); } double rating; Movie movie = movies.get(position); rating= movie.getRating()*0.01*5; viewHolder = (ViewHolder) convertView.getTag(); viewHolder.imageURL = movie.getPoster(); viewHolder.textView.setText(movie.getTitle()); viewHolder.rating.setRating((float) rating); new DownloadAsyncTask(position).execute(viewHolder); return convertView; } static class ViewHolder { int position; ImageView poster; TextView textView; Bitmap bitmap; String imageURL; String title; RatingBar rating; } private class DownloadAsyncTask extends AsyncTask<ViewHolder, Void, ViewHolder> { private int position; public DownloadAsyncTask(int position) { this.position= position; } @Override protected ViewHolder doInBackground(ViewHolder... params) { // TODO Auto-generated method stub //load image directly ViewHolder viewHolder = params[0]; try { URL imageURL = new URL(viewHolder.imageURL); viewHolder.bitmap = BitmapFactory.decodeStream(imageURL.openStream()); } catch (IOException e) { // TODO: handle exception Log.e("error", "Downloading Image Failed"); viewHolder.bitmap = null; } return viewHolder; } @Override protected void onPostExecute(ViewHolder result) { if (result.bitmap != null && position == result.position) { result.poster.setImageBitmap(Bitmap.createScaledBitmap(result.bitmap, imageWidth, (imageWidth + (imageWidth / 3)), false)); } else { result.poster.setImageResource(R.drawable.hobbit); } } } */ }