package com.kure.musicplayer.adapters;
import java.util.ArrayList;
import com.kure.musicplayer.R;
import com.kure.musicplayer.model.Song;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* Maps `Songs` inside `ArrayLists` into `TextView` fields.
*
* We'll map the ArrayList from our MainActivity into
* multiple Artist/Title fields inside our activity_main Layout.
*
*/
public class AdapterSong extends BaseAdapter {
private ArrayList<Song> songs;
private LayoutInflater songInflater;
public AdapterSong(Context c, ArrayList<Song> theSongs) {
songs = theSongs;
songInflater = LayoutInflater.from(c);
}
@Override
public int getCount() {
return songs.size();
}
@Override
public Object getItem(int position) {
return songs.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Will map from a Song to a Song layout
LinearLayout songLayout = (LinearLayout)songInflater.inflate(R.layout.menu_item_song,
parent,
false);
TextView titleView = (TextView)songLayout.findViewById(R.id.menu_item_song_title);
TextView artistView = (TextView)songLayout.findViewById(R.id.menu_item_song_artist);
TextView albumView = (TextView)songLayout.findViewById(R.id.menu_item_song_album);
Song currentSong = songs.get(position);
String title = currentSong.getTitle();
if (title.isEmpty())
titleView.setText("<unknown>");
else
titleView.setText(currentSong.getTitle());
String artist = currentSong.getArtist();
if (artist.isEmpty())
artistView.setText("<unknown>");
else
artistView.setText(currentSong.getArtist());
String album = currentSong.getAlbum();
if (album.isEmpty())
albumView.setText("<unknown>");
else
albumView.setText(currentSong.getAlbum());
// Saving position as a tag.
// Each Song layout has a onClick attribute,
// which calls a function that plays a song
// with that tag.
songLayout.setTag(position);
return songLayout;
}
}