package com.ved.musicmapapp.adapters; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ScheduledThreadPoolExecutor; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.ved.musicmapapp.R; import com.ved.musicmapapp.Objects.Artist; import com.ved.musicmapapp.utils.SerialExecutor; import com.ved.musicmapapp.utils.Statics; import com.ved.musicmapapp.utils.Utils; public class ArtistAdapter extends BaseAdapter { private Activity cxt; private LayoutInflater inflat; private List<Artist> artists; private ImageLoader imageLoader; private DisplayImageOptions options; // private int count = Statics.EXPAND_VIEW_COUNT; private boolean isLike; private SerialExecutor taskExecutor; public ArtistAdapter(Activity cxt, List<Artist> artists, boolean isLike) { this.cxt = cxt; this.artists = artists; this.isLike = isLike; inflat = (LayoutInflater) cxt .getSystemService(Context.LAYOUT_INFLATER_SERVICE); imageLoader = ImageLoader.getInstance(); imageLoader.init(ImageLoaderConfiguration.createDefault(cxt)); options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.img_no_image) .showImageForEmptyUri(R.drawable.img_no_image) .showImageOnFail(R.drawable.img_no_image).cacheInMemory(true) .cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565).build(); taskExecutor = new SerialExecutor(new ScheduledThreadPoolExecutor(3)); } public void setData(ArrayList<Artist> artists) { this.artists = artists; notifyDataSetChanged(); } @Override public int getCount() { // count = artists.size(); // count = (count>Statics.EXPAND_VIEW_COUNT) ? Statics.EXPAND_VIEW_COUNT // : count; return /* count */artists.size(); } // public void updateCount(int count){ // this.count = count; // notifyDataSetChanged(); // } @Override public long getItemId(int position) { return -1; } // public void expandData(){ // count += Statics.EXPAND_VIEW_COUNT; // count = (count>artists.size()) ? artists.size() : count; // notifyDataSetChanged(); // } @Override public View getView(final int pos, View v, ViewGroup parent) { Artist artist = getItem(pos); if (v == null) { v = inflat.inflate(R.layout.item_artist, null); } // ImageView imv_like = (ImageView)v.findViewById(R.id.imv_like); final ImageView imv_av = (ImageView) v.findViewById(R.id.imv_musician_av); TextView tv_name = (TextView) v.findViewById(R.id.tv_name_musician); tv_name.setText(artist.getName()); if (artist.isHasArtist() || isLike) { tv_name.setTextColor(cxt.getResources().getColor(R.color.blue_new)); } else { tv_name.setTextColor(cxt.getResources().getColor(R.color.text_other)); } TextView tvNoSong = (TextView) v.findViewById(R.id.tvNoSong); if (isLike) { tvNoSong.setText(artist.getSongs().size() > 1 ? artist.getSongs() .size() + " likes" : artist.getSongs().size() + " like"); } else { tvNoSong.setText(artist.getSongs().size() > 1 ? cxt.getString( R.string.user_details_tracks, artist.getSongs().size()) : cxt.getString(R.string.user_details_track, artist .getSongs().size())); } /* * if(myself){ imv_like.setVisibility(View.GONE); }else{ * imv_like.setVisibility(View.VISIBLE); } * * if(artist.isLiked()){ * imv_like.setImageResource(R.drawable.btn_dislike); }else{ * imv_like.setImageResource(R.drawable.btn_like); } * * imv_like.setOnClickListener(new OnClickListener() { * * @Override public void onClick(View v) { if(artist.isLiked()){ // * Dislike artist.setLiked(false); new * LikeArtistTask(cxt).execute(Statics.curUser.getID(), * artist.getUserArtistId(), Statics.DISLIKE); }else{ // Like * artist.setLiked(true); new * LikeArtistTask(cxt).execute(Statics.curUser.getID(), * artist.getUserArtistId(), Statics.LIKE); } notifyDataSetChanged(); } * }); */ imv_av.setImageResource(R.drawable.img_no_image); if (artist.getAvatar().trim().length() > 0) { imageLoader.displayImage(artist.getAvatar().trim(), imv_av, options,new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { // TODO Auto-generated method stub } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { // TODO Auto-generated method stub } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { //imv_av.setImageBitmap(Utils.getRoundedCornerBitmap(loadedImage, 20)); imv_av.setImageBitmap(loadedImage); } @Override public void onLoadingCancelled(String imageUri, View view) { // TODO Auto-generated method stub } }); } else { try { taskExecutor.execute(String.valueOf(getItem(pos).getID()), new Runnable() { @Override public void run() { Artist at = getItem(pos); String avatar = loadAvatar(cxt, at); if (avatar != null) { Log.d("ARTIST", at.getName() + ": " + avatar); for (Artist artist : artists) { if (artist.getID() == at.getID()) { artist.setAvatar(avatar); mHandler.sendEmptyMessage(1); break; } } } } }); /* * new GetArtistAvatarTask(cxt) { * * @Override public void onSuccess(String result) { * super.onSuccess(result); Artist artist = getItem(pos); * artist.setAvatar(result); notifyDataSetChanged(); } * }.execute(artist.getID() + "", artist.getName()); */ } catch (Exception e) { } } return v; } @Override public Artist getItem(int arg0) { return artists.get(arg0); } private String loadAvatar(Context context, Artist artist) { try { if (!Statics.isNetworkConnected(context)) { return null; } HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(Statics.WS_PATH + "getArtistAvatar.php"); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("artist_id", String.valueOf(artist .getID()))); nvps.add(new BasicNameValuePair("artist_name", artist.getName())); httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); if (entity != null) { // get the response content as a string InputStream instream = entity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(instream, "UTF-8")); String line; StringBuilder sb = new StringBuilder(""); while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } return sb.toString(); } } catch (UnsupportedEncodingException e1) { Log.e("Exception", "" + e1.getMessage()); // e1.printStackTrace(); } catch (ClientProtocolException e1) { Log.e("ClientProtocolException", "" + e1.getMessage()); // e1.printStackTrace(); } catch (IOException e1) { Log.e("IOException", "" + e1.getMessage()); e1.printStackTrace(); } return null; } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { notifyDataSetChanged(); super.handleMessage(msg); } }; }