package com.wigwamlabs.spotify.ui; import android.content.Context; import android.database.DataSetObserver; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListAdapter; import android.widget.TextView; import com.wigwamlabs.spotify.Playlist; import com.wigwamlabs.spotify.Track; public class PlaylistAdapter implements ListAdapter, Playlist.Callback { private final Context mContext; private final Playlist mPlaylist; private DataSetObserver mObserver; public PlaylistAdapter(Context context, Playlist playlist) { mContext = context; mPlaylist = playlist; mPlaylist.setCallback(this, false); } @Override public boolean areAllItemsEnabled() { return true; } @Override public boolean isEnabled(int position) { return true; } @Override public void registerDataSetObserver(DataSetObserver observer) { mObserver = observer; } @Override public void unregisterDataSetObserver(DataSetObserver observer) { if (mObserver == observer) { mObserver = null; } } @Override public int getCount() { return mPlaylist.getCount(); } @Override public Track getItem(int position) { return mPlaylist.getItem(position); } @Override public long getItemId(int position) { final Track item = mPlaylist.getItem(position); return item.getId(); } @Override public boolean hasStableIds() { return true; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView view = (TextView) convertView; if (view == null) { view = new TextView(mContext); view.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } final Track item = getItem(position); view.setText(item.getName() + ": " + item.getArtistsString()); return view; } @Override public int getItemViewType(int position) { return 0; } @Override public int getViewTypeCount() { return 1; } @Override public boolean isEmpty() { return mPlaylist.getCount() == 0; } @Override public void onPlaylistUpdateInProgress(boolean done) { if (done) { if (mObserver != null) { mObserver.onChanged(); } } } @Override public void onPlaylistRenamed() { } @Override public void onPlaylistStateChanged() { } }