/**
* Music列表 Adapter类
* Created by Lezg on 2014/6/7.
*/
public class ListViewMusicAdapter extends BaseAdapter {
private int selectedItem = -1;
private Context mContext;
private ArrayList<Mp3Info> listItems;
static class ListViewItem {
public TextView musicName;
public TextView musicArtist;
public TextView musicDuration;
public ViewGroup deleteHolder;
}
public ListViewMusicAdapter(Context context, ArrayList<Mp3Info> data) {
this.listItems = data;
this.mContext = context;
}
public void setSelectedItem(int position){
selectedItem = position;
notifyDataSetChanged();
}
@Override
public int getCount() {
return listItems.size();
}
@Override
public Object getItem(int position) {
return listItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressWarnings("ConstantConditions")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ListViewItem listViewItem;
SlideView slideView = (SlideView) convertView;
if (slideView == null) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);
slideView = new SlideView(mContext);
slideView.setContentView(itemView);
listViewItem = new ListViewItem();
listViewItem.musicName = (TextView) slideView.findViewById(R.id.music_name);
listViewItem.musicArtist = (TextView) slideView.findViewById(R.id.music_artist);
listViewItem.musicDuration = (TextView) slideView.findViewById(R.id.music_duration);
listViewItem.deleteHolder = (ViewGroup) slideView.findViewById(R.id.rl_holder);
slideView.setOnSlideListener((Main) mContext);
slideView.setTag(listViewItem);
} else {
listViewItem = (ListViewItem) slideView.getTag();
}
final Mp3Info mp3Info = listItems.get(position);
mp3Info.slideView = slideView;
mp3Info.slideView.shrink();
listViewItem.musicName.setText(String.valueOf((position + 1)) + "." + mp3Info.getName());
listViewItem.musicArtist.setText(mp3Info.getArtist());
listViewItem.musicDuration.setText(AppHelper.formatTime(mp3Info.getDuration()));
listViewItem.deleteHolder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listItems.remove(position);
notifyDataSetChanged();
AppHelper.deleteMusicFromSDCard(mContext, mp3Info.getUrl(), mp3Info.getId());
}
});
if(selectedItem == position){
slideView.setBackgroundColor(Color.parseColor("#40aaaaaa"));
}else {
slideView.setBackgroundColor(Color.TRANSPARENT);
}
return slideView;
}
}
lvMusic.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
listPosition = position;
lvMusicAdapter.setSelectedItem(position);
playMusic(position, AppHelper.MODE_PLAY);
}
});