package com.lq.adapter;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import com.lq.xpressmusic.R;
import com.lq.entity.TrackInfo;
/**
* @author lq 2013-6-1 lq2625304@gmail.com
* */
public class TrackAdapter extends BaseAdapter implements OnClickListener {
private Context mContext = null;
/** 数据源 */
private ArrayList<TrackInfo> mData = null;
/** 播放时为相应播放条目显示一个播放标记 */
private int mActivateItemPos = -1;
public TrackAdapter(Context context) {
mContext = context;
mData = new ArrayList<TrackInfo>();
}
public void setData(List<TrackInfo> data) {
mData.clear();
if (data != null) {
mData.addAll(data);
}
mActivateItemPos = -1;
notifyDataSetChanged();
}
public ArrayList<TrackInfo> getData() {
return mData;
}
/** 让指定位置的条目显示一个正在播放标记(活动状态标记) */
public void setSpecifiedIndicator(int position) {
mActivateItemPos = position;
notifyDataSetChanged();
}
@Override
public boolean isEmpty() {
return mData.size() == 0;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public TrackInfo getItem(int position) {
return mData.get((int) getItemId(position));
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.list_item_track, parent, false);
holder = new ViewHolder();
holder.indicator = convertView.findViewById(R.id.play_indicator);
holder.title = (TextView) convertView
.findViewById(R.id.textview_music_title);
holder.artist = (TextView) convertView
.findViewById(R.id.textview_music_singer);
holder.popup_menu = (ImageButton) convertView
.findViewById(R.id.track_popup_menu);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (mActivateItemPos == position) {
holder.indicator.setVisibility(View.VISIBLE);
} else {
holder.indicator.setVisibility(View.INVISIBLE);
}
holder.title.setText(getItem(position).getTitle());
if (getItem(position).getArtist().equals("<unknown>")) {
holder.artist.setText(mContext.getResources().getString(
R.string.unknown_artist));
} else {
holder.artist.setText(getItem(position).getArtist());
}
holder.popup_menu.setOnClickListener(TrackAdapter.this);
return convertView;
}
public static class ViewHolder {
TextView title;
TextView artist;
View indicator;
ImageButton popup_menu;
}
@Override
public void onClick(View v) {
v.showContextMenu();
}
}