package com.sgxp.asgmt1.customadapter; import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import com.group.studyproject.R; import com.sgxp.asgmt1.lazylist.ImageLoader; import com.sgxp.asgmt1.provider.ItunesRssDb; /** * I am using an Image Loader * in this program and hence * have to make my custom cursor adapter. * and handle the image loading separately. * */ public class CustomAdapter extends SimpleCursorAdapter { private int mSelectedPosition; public Cursor items; private Context context; private int layout; ImageView image; TextView title; TextView genre; TextView releasedate; TextView price; TextView album; TextView company; private static LayoutInflater inflater=null; public ImageLoader imageLoader; @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { Cursor c = getCursor(); final LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(layout, parent, false); String sTitle = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_TITLE)); String sGenre = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_GENRE)); String sReleasedate = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.RELEASEDATE)); String sPrice = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_PRICE)); String sAlbum = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_NAME)); String sCompany = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.COPYRIGHT)); title = (TextView) v.findViewById(R.id.title); setTextIfValid(title,sTitle); genre = (TextView) v.findViewById(R.id.genre); setTextIfValid(genre,sGenre); releasedate = (TextView) v.findViewById(R.id.releasedate); setTextIfValid(releasedate,sReleasedate); price = (TextView) v.findViewById(R.id.price); setTextIfValid(price,sPrice); album = (TextView) v.findViewById(R.id.album); setTextIfValid(album,sAlbum); company = (TextView) v.findViewById(R.id.company); setTextIfValid(company,sCompany); items = c; return v; } public void setTextIfValid(TextView tv, String sValue){ if (tv != null) { tv.setText(sValue); } } public CustomAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flagRegisterContentObserver) { super(context, layout, c, from, to,flagRegisterContentObserver); this.context = context; this.layout = layout; imageLoader=new ImageLoader(context.getApplicationContext()); } @Override public void bindView(View v, Context context, Cursor c) { String sImage = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.IMAGE_LINK_55)); String sTitle = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_TITLE)); String sGenre = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_GENRE)); String sReleasedate = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.RELEASEDATE)); String sPrice = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_PRICE)); String sAlbum = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.ENTRY_NAME)); String sCompany = c.getString(c.getColumnIndex(ItunesRssDb.Top40Table.COPYRIGHT)); image = (ImageView) v.findViewById(R.id.image); title = (TextView) v.findViewById(R.id.title); setTextIfValid(title,sTitle); genre = (TextView) v.findViewById(R.id.genre); setTextIfValid(genre,sGenre); releasedate = (TextView) v.findViewById(R.id.releasedate); setTextIfValid(releasedate,sReleasedate); price = (TextView) v.findViewById(R.id.price); setTextIfValid(price,sPrice); album = (TextView) v.findViewById(R.id.album); setTextIfValid(album,sAlbum); company = (TextView) v.findViewById(R.id.company); setTextIfValid(company,sCompany); if(sImage!=null && sImage.length()>0) imageLoader.DisplayImage(sImage, image); } public void setSelectedPosition(int position) { mSelectedPosition = position; notifyDataSetChanged(); } }