package com.refactech.driibo.ui.adapter;
import com.android.volley.toolbox.ImageLoader;
import com.refactech.driibo.AppData;
import com.refactech.driibo.R;
import com.refactech.driibo.data.RequestManager;
import com.refactech.driibo.type.dribble.Shot;
import com.refactech.driibo.util.TimeUtils;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
/**
* Created by Issac on 7/18/13.
*/
public class ShotsAdapter extends CursorAdapter {
private LayoutInflater mLayoutInflater;
private ListView mListView;
private BitmapDrawable mDefaultAvatarBitmap = (BitmapDrawable) AppData.getContext()
.getResources().getDrawable(R.drawable.default_avatar);
private Drawable mDefaultImageDrawable = new ColorDrawable(Color.argb(255, 201, 201, 201));
public ShotsAdapter(Context context, ListView listView) {
super(context, null, false);
mLayoutInflater = ((Activity) context).getLayoutInflater();
mListView = listView;
}
@Override
public Shot getItem(int position) {
mCursor.moveToPosition(position);
return Shot.fromCursor(mCursor);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
return mLayoutInflater.inflate(R.layout.listitem_shot, null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
Holder holder = getHolder(view);
if (holder.imageRequest != null) {
holder.imageRequest.cancelRequest();
}
if (holder.avartarRequest != null) {
holder.avartarRequest.cancelRequest();
}
view.setEnabled(!mListView.isItemChecked(cursor.getPosition()
+ mListView.getHeaderViewsCount()));
Shot shot = Shot.fromCursor(cursor);
holder.imageRequest = RequestManager.loadImage(shot.getImage_url(), RequestManager
.getImageListener(holder.image, mDefaultImageDrawable, mDefaultImageDrawable));
holder.avartarRequest = RequestManager.loadImage(shot.getPlayer().getAvatar_url(),
RequestManager.getImageListener(holder.avatar, mDefaultAvatarBitmap,
mDefaultAvatarBitmap));
holder.title.setText(shot.getTitle());
holder.userName.setText(shot.getPlayer().getName());
holder.text_view_count.setText(String.valueOf(shot.getViews_count()));
holder.text_like_count.setText(String.valueOf(shot.getLikes_count()));
holder.text_comment_count.setText(String.valueOf(shot.getComments_count()));
holder.time.setText(TimeUtils.getListTime(shot.getCreated_at()));
}
private Holder getHolder(final View view) {
Holder holder = (Holder) view.getTag();
if (holder == null) {
holder = new Holder(view);
view.setTag(holder);
}
return holder;
}
private class Holder {
public ImageView image;
public ImageView avatar;
public TextView title;
public TextView userName;
public TextView text_view_count;
public TextView text_comment_count;
public TextView text_like_count;
public TextView time;
public ImageLoader.ImageContainer imageRequest;
public ImageLoader.ImageContainer avartarRequest;
public Holder(View view) {
image = (ImageView) view.findViewById(R.id.image);
avatar = (ImageView) view.findViewById(R.id.avatar);
title = (TextView) view.findViewById(R.id.title);
userName = (TextView) view.findViewById(R.id.userName);
text_view_count = (TextView) view.findViewById(R.id.text_view_count);
text_comment_count = (TextView) view.findViewById(R.id.text_comment_count);
text_like_count = (TextView) view.findViewById(R.id.text_like_count);
time = (TextView) view.findViewById(R.id.time);
}
}
}