package com.victorvieux.livedroid.adapters; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.androidquery.AQuery; import com.victorvieux.livedroid.R; import com.victorvieux.livedroid.api.data.Achievement; import com.victorvieux.livedroid.api.data.Achievement.ACH_TYPE; public class AchAdapter extends BaseAdapter{ final List<Achievement> mAchs; final List<Achievement> mFilteredAchs; final LayoutInflater mLayoutInflater; final AQuery aq; final Context mContext; final String mGameName; public AchAdapter(Context context, List<Achievement> achs, String gameName) { aq = new AQuery(context); mAchs = achs; mFilteredAchs = new ArrayList<Achievement>(); mLayoutInflater = LayoutInflater.from(context); mContext = context; mGameName = gameName; filter(ACH_TYPE.ALL); } public void filter(ACH_TYPE type) { mFilteredAchs.clear(); if (mAchs != null) { for (Achievement a : mAchs) switch (type) { case WON: if (a.getType() == ACH_TYPE.WON) mFilteredAchs.add(a); break; case MISSING: if (a.getType() == ACH_TYPE.MISSING) mFilteredAchs.add(a); break; default: mFilteredAchs.add(a); break; } } notifyDataSetChanged(); } @Override public int getCount() { return mFilteredAchs.size(); } @Override public Object getItem(int position) { return mFilteredAchs.get(position); } @Override public long getItemId(int position) { return mFilteredAchs.get(position).ID; } @Override public int getItemViewType(int position) { return (mFilteredAchs.get(position).getType() == ACH_TYPE.WON ? 0 : 1); } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh; if (convertView == null) { convertView = mLayoutInflater.inflate(getItemViewType(position) == 0 ? R.layout.item_ach_owned : R.layout.item_ach, null); vh = new ViewHolder(); vh.imageViewTile = (ImageView) convertView.findViewById(R.id.imageViewTile); vh.textViewTitle = (TextView) convertView.findViewById(R.id.textViewTitle); vh.textViewScore = (TextView) convertView.findViewById(R.id.textViewScore); vh.textViewDesc = (TextView) convertView.findViewById(R.id.textViewDesc); vh.imageViewVideo = (ImageView) convertView.findViewById(R.id.imageViewVideo); convertView.setTag(vh); } else vh = (ViewHolder) convertView.getTag(); final Achievement a = mFilteredAchs.get(position); aq.id(vh.imageViewTile).image(a.TileUrl); vh.textViewTitle.setText(a.Name.length() == 0 ? vh.textViewDesc.getContext().getString(R.string.hidden) : a.Name); vh.textViewScore.setText(""+a.Score); vh.textViewDesc.setText(a.Name.length() == 0 ? vh.textViewDesc.getContext().getString(R.string.hidden_desc) : a.Description); vh.imageViewVideo.setVisibility(a.Name.length() == 0 ? View.GONE : View.VISIBLE); vh.imageViewVideo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_SEARCH); intent.setPackage("com.google.android.youtube"); intent.putExtra("query", mGameName + " " + a.Name); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } }); return convertView; } private class ViewHolder { public ImageView imageViewTile; public TextView textViewTitle; public TextView textViewScore; public TextView textViewDesc; public ImageView imageViewVideo; } }