Android Open Source - PlayTunes Song List Adapter






From Project

Back to project page PlayTunes.

License

The source code is released under:

Copyright (c) 2014, Impeccable Labs, LLC. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions ar...

If you think the Android project PlayTunes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.ideabag.playtunes.adapter;
//from  w w w.  j  a  v a2s  .com
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.PlaylistManager;
import com.ideabag.playtunes.util.StarToggleTask;

import android.content.Context;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.ToggleButton;

public class SongListAdapter extends AsyncQueryAdapter {
  
  protected LayoutInflater inflater;
  
  String mNowPlayingMediaID = null;
  
  protected PlaylistManager PlaylistManager;
  
  View.OnClickListener songMenuClickListener;
    
    
  public SongListAdapter( Context context, View.OnClickListener menuClickListener) {
    super( context );
    
    PlaylistManager = new PlaylistManager( mContext );
      
      this.songMenuClickListener = menuClickListener;
      
      inflater = ( LayoutInflater ) mContext.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    
  }
  
  public void setNowPlayingMedia( String media_id ) {
    
    mNowPlayingMediaID = media_id;
    
  }
  

  @Override public long getItemId( int position ) {
    
    int mID = 0;
    
    if ( mCursor != null ) {
      
      mCursor.moveToPosition( position );
      // TODO: Remember, in any playlist or song query, the first field _MUST_ be a media _id
      mID = mCursor.getInt( 0 );
      
    }
    
    return mID;
    
  }
  
  @Override public boolean hasStableIds() {
    
        return true;
        
  }

  @Override public View getView( int position, View convertView, ViewGroup parent ) {
    
    ViewHolder holder;
    
    if ( null == convertView ) {
      
      convertView = inflater.inflate( R.layout.list_item_song_no_album, null );
      
      holder = new ViewHolder();
      
      holder.starButton = ( ToggleButton ) convertView.findViewById( R.id.StarButton );
      holder.menuButton = ( ImageButton ) convertView.findViewById( R.id.MenuButton );
      holder.songTitle = ( TextView ) convertView.findViewById( R.id.SongTitle );
      holder.songArtist = ( TextView ) convertView.findViewById( R.id.SongArtist );
      holder.songAlbum = ( TextView ) convertView.findViewById( R.id.SongAlbum );
      
      //holder.indicator = convertView.findViewById( R.id.NowPlayingIndicator );
      
      holder.starButton.setOnClickListener( songMenuClickListener );
      holder.menuButton.setOnClickListener( songMenuClickListener );
      
      convertView.setTag( holder );
      
    } else {
      
      holder = ( ViewHolder ) convertView.getTag();
      
      StarToggleTask starTask = ( StarToggleTask ) holder.starButton.getTag();
      
      if ( starTask != null && !starTask.isCancelled() ) {
        
        starTask.cancel( true );
        
      }
      
    }
    
    mCursor.moveToPosition( position );
    
    String songTitle = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media.TITLE ) );
    String songArtist = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media.ARTIST ) );
    String songAlbum = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media.ALBUM ) );
    String song_id = mCursor.getString( mCursor.getColumnIndexOrThrow( MediaStore.Audio.Media._ID ) );
    
    StarToggleTask starTask = new StarToggleTask( holder.starButton );
    
    holder.starButton.setTag( starTask );
    
    starTask.execute( song_id );
    
    holder.songTitle.setText( songTitle );
    holder.songArtist.setText( songArtist );
    holder.songAlbum.setText( songAlbum );
    
    holder.starButton.setTag( R.id.tag_song_id, song_id );
    holder.menuButton.setTag( R.id.tag_song_id, song_id );
    
    // TODO: Add now playing indicator
    /*
    if ( null != mNowPlayingMediaID && mNowPlayingMediaID.equals( song_id ) ) {
      
      holder.songTitle.setTextColor( mContext.getResources().getColor( R.color.primaryAccentColor ) );
      holder.indicator.setVisibility( View.VISIBLE );
      
    } else {
      
      holder.songTitle.setTextColor( mContext.getResources().getColor( R.color.textColorPrimary ) );
      
      holder.indicator.setVisibility( View.INVISIBLE );
    }
    */
    return convertView;
    
  }
  
  static class ViewHolder {
    
    ToggleButton starButton;
    ImageButton menuButton;
    TextView songTitle;
    TextView songArtist;
    TextView songAlbum;
    // TODO: Add now playing indicator
    //View indicator;
    
  }

}




Java Source Code List

com.ideabag.playtunes.PlaylistManager.java
com.ideabag.playtunes.DragNDrop.DragListener.java
com.ideabag.playtunes.DragNDrop.DragNDropListView.java
com.ideabag.playtunes.DragNDrop.DropListener.java
com.ideabag.playtunes.DragNDrop.RemoveListener.java
com.ideabag.playtunes.activity.MainActivity.java
com.ideabag.playtunes.activity.NowPlayingActivity.java
com.ideabag.playtunes.activity.SettingsActivity.java
com.ideabag.playtunes.adapter.AlbumListAdapter.java
com.ideabag.playtunes.adapter.AlbumsAllAdapter.java
com.ideabag.playtunes.adapter.AlbumsOneAdapter.java
com.ideabag.playtunes.adapter.ArtistAlbumsAdapter.java
com.ideabag.playtunes.adapter.ArtistAllSongsAdapter.java
com.ideabag.playtunes.adapter.ArtistListAdapter.java
com.ideabag.playtunes.adapter.ArtistSinglesAdapter.java
com.ideabag.playtunes.adapter.ArtistsAllAdapter.java
com.ideabag.playtunes.adapter.AsyncQueryAdapter.java
com.ideabag.playtunes.adapter.GenresAllAdapter.java
com.ideabag.playtunes.adapter.GenresOneAdapter.java
com.ideabag.playtunes.adapter.NavigationListAdapter.java
com.ideabag.playtunes.adapter.PlaylistsAllAdapter.java
com.ideabag.playtunes.adapter.PlaylistsOneAdapter.java
com.ideabag.playtunes.adapter.SongListAdapter.java
com.ideabag.playtunes.adapter.SongsAllAdapter.java
com.ideabag.playtunes.adapter.search.SearchAlbumsAdapter.java
com.ideabag.playtunes.adapter.search.SearchArtistsAdapter.java
com.ideabag.playtunes.adapter.search.SearchSongsAdapter.java
com.ideabag.playtunes.database.MediaQuery.java
com.ideabag.playtunes.dialog.AddToPlaylistDialogFragment.java
com.ideabag.playtunes.dialog.CreatePlaylistDialogFragment.java
com.ideabag.playtunes.dialog.FeedbackDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistDeleteDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistMenuDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistRenameDialogFragment.java
com.ideabag.playtunes.dialog.RateAppDialogFragment.java
com.ideabag.playtunes.dialog.SongMenuDialogFragment.java
com.ideabag.playtunes.fragment.AlbumsAllFragment.java
com.ideabag.playtunes.fragment.AlbumsOneFragment.java
com.ideabag.playtunes.fragment.ArtistSinglesFragment.java
com.ideabag.playtunes.fragment.ArtistsAllFragment.java
com.ideabag.playtunes.fragment.ArtistsOneFragment.java
com.ideabag.playtunes.fragment.FooterControlsFragment.java
com.ideabag.playtunes.fragment.GenresAllFragment.java
com.ideabag.playtunes.fragment.GenresOneFragment.java
com.ideabag.playtunes.fragment.MusicBrowserFragment.java
com.ideabag.playtunes.fragment.NavigationDrawerFragment.java
com.ideabag.playtunes.fragment.NavigationFragment.java
com.ideabag.playtunes.fragment.PlaylistsAllFragment.java
com.ideabag.playtunes.fragment.PlaylistsOneFragment.java
com.ideabag.playtunes.fragment.SaveScrollListFragment.java
com.ideabag.playtunes.fragment.SongsFragment.java
com.ideabag.playtunes.fragment.TrackProgressFragment.java
com.ideabag.playtunes.fragment.search.SearchAlbumsFragment.java
com.ideabag.playtunes.fragment.search.SearchAllFragment.java
com.ideabag.playtunes.fragment.search.SearchArtistsFragment.java
com.ideabag.playtunes.fragment.search.SearchFragment.java
com.ideabag.playtunes.fragment.search.SearchSongsFragment.java
com.ideabag.playtunes.fragment.search.SearchSuggestionsFragment.java
com.ideabag.playtunes.media.AudioFocusHelper.java
com.ideabag.playtunes.media.MusicFocusable.java
com.ideabag.playtunes.media.MusicIntentReceiver.java
com.ideabag.playtunes.media.PlaylistMediaPlayer.java
com.ideabag.playtunes.media.RemoteControlClientCompat.java
com.ideabag.playtunes.media.RemoteControlHelper.java
com.ideabag.playtunes.service.LockscreenManager.java
com.ideabag.playtunes.service.MusicPlayerService.java
com.ideabag.playtunes.service.PlaybackNotification.java
com.ideabag.playtunes.util.AdmobUtil.java
com.ideabag.playtunes.util.AlbumSongsCountTask.java
com.ideabag.playtunes.util.AsyncDrawable.java
com.ideabag.playtunes.util.BitmapWorkerTask.java
com.ideabag.playtunes.util.CheckRemoteVersionFileTask.java
com.ideabag.playtunes.util.DrawerLayout.java
com.ideabag.playtunes.util.GAEvent.java
com.ideabag.playtunes.util.IMusicBrowser.java
com.ideabag.playtunes.util.ISearchableAdapter.java
com.ideabag.playtunes.util.LoadAlbumStackTask.java
com.ideabag.playtunes.util.MergeAdapter.java
com.ideabag.playtunes.util.QueryCountTask.java
com.ideabag.playtunes.util.SackOfViewsAdapter.java
com.ideabag.playtunes.util.SearchHistory.java
com.ideabag.playtunes.util.StarToggleTask.java
com.ideabag.playtunes.util.TrackerSingleton.java