/***************************************************************************
* Copyright 2005-2009 Last.fm Ltd. *
* Portions contributed by Casey Link, Lukasz Wisniewski, *
* Mike Jennings, and Michael Novak Jr. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
package fm.last.android.adapter;
import java.util.ArrayList;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import fm.last.android.R;
import fm.last.api.Event;
/**
* ListView adapter for Events (section)
*
* @author Lukasz Wisniewski
*/
public class EventListSectionAdapter extends ListAdapter {
private static final long serialVersionUID = 2070559787839689784L;
private ArrayList<Event> mEvents;
// private EventListAdapterListener mAdapterListener;
// private int mProvidedPages;
// private int mTotalPages;
/**
* Default constructor
*
* @param context
*/
public EventListSectionAdapter(Activity context) {
super(context);
init();
}
/**
* Standard class fields initialization shared between all constructors
*/
private void init() {
}
/**
* Sets data source for the adapter.
*
* @param events
*/
public void setEventsSource(ArrayList<Event> events) {
mEvents = events;
// notifyDataSetChanged();
}
@Override
public int getCount() {
if (mEvents != null) {
return mEvents.size();
}
return 0;
}
@Override
public Object getItem(int position) {
return mEvents.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder;
if (row == null) {
LayoutInflater inflater = mContext.getLayoutInflater();
row = inflater.inflate(R.layout.event_row, null);
holder = new ViewHolder();
holder.eventName = (TextView) row.findViewById(R.id.ExtendedRowBiggerText);
holder.venueName = (TextView) row.findViewById(R.id.ExtendedRowSmallerText0);
holder.countryName = (TextView) row.findViewById(R.id.ExtendedRowSmallerText1);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
holder.eventName.setText(mEvents.get(position).getTitle());
holder.venueName.setText(mEvents.get(position).getVenue().getName() + ", " + mEvents.get(position).getVenue().getLocation().getCity());
holder.countryName.setText(mEvents.get(position).getVenue().getLocation().getCountry());
// String date = "";
// if(mEntries.get(position).event.getStartDate() != null){
// date =
// mDateFormat.format(mEntries.get(position).event.getStartDate());
// }
//
// String hour = "";
// if(mEntries.get(position).event.getStartTime() != null){
// hour =
// mHourFormat.format(mEntries.get(position).event.getStartTime());
// }
return row;
}
/**
* Class implementing holder pattern, performance boost
*
* @author Lukasz Wisniewski
*/
static class ViewHolder {
TextView eventName;
TextView venueName;
TextView countryName;
}
// private boolean fetchingMore = false;
//
// private void fetchMore(){
// mAdapterListener.getPaginatedPage(mProvidedPages+1);
// }
//
// @Override
// public void onScroll(AbsListView view, int firstVisibleItem,
// int visibleItemCount, int totalItemCount) {
// super.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
//
// if(mProvidedPages < mTotalPages){
// if(firstVisibleItem + visibleItemCount == totalItemCount){
// // TODO load paginated results
// if (!fetchingMore){
// fetchingMore = true;
// Log.i(TAG, String.format("total = %d, provided = %d", mTotalPages,
// mProvidedPages ) );
// Log.i(TAG, "fetching more results..." );
// fetchMore();
// }
// }
// }
// }
// /**
// * Method for providing event data to adapter on-the-fly
// *
// * @param events
// */
// public void providePage(PaginatedResult<Event> events){
// Log.i(TAG, "providePage "+events.getPage());
// if(events.getPage() == 1){
// setEventsSource(events.getPageResults(),
// events.getPageResults().toString());
// mTotalPages = events.getTotalPages();
// mProvidedPages = 1;
// }
// else {
// mProvidedPages++;
// addEventsSource(events.getPageResults(),
// events.getPageResults().toString());
// }
// fetchingMore = false;
// }
}