想给一个网络音乐播放器加上一个功能,就是用户听完了一首歌以后,歌曲的标题会自动由黑色变成灰色,请问该如何实现?
原始代码如下:
static View setupListView(Activity activity, View convertView, ViewGroup parent,
MediaBrowserCompat.MediaItem item) {
if (sColorStateNotPlaying == null || sColorStatePlaying == null) {
initializeColorStateLists(activity);
}
MediaItemViewHolder holder;
Integer cachedState = STATE_INVALID;
if (convertView == null) {
convertView = LayoutInflater.from(activity)
.inflate(R.layout.media_list_item, parent, false);
holder = new MediaItemViewHolder();
holder.mImageView = (ImageView) convertView.findViewById(R.id.play_eq);
holder.mTitleView = (TextView) convertView.findViewById(R.id.title);
holder.mDescriptionView = (TextView) convertView.findViewById(R.id.description);
convertView.setTag(holder);
} else {
holder = (MediaItemViewHolder) convertView.getTag();
cachedState = (Integer) convertView.getTag(R.id.tag_mediaitem_state_cache);
}
MediaDescriptionCompat description = item.getDescription();
holder.mTitleView.setText(description.getTitle());
holder.mDescriptionView.setText(description.getSubtitle());
// If the state of convertView is different, we need to adapt the view to the
// new state.
int state = getMediaItemState(activity, item);
if (cachedState == null || cachedState != state) {
Drawable drawable = getDrawableByState(activity, state);
if (drawable != null) {
holder.mImageView.setImageDrawable(drawable);
holder.mImageView.setVisibility(View.VISIBLE);
} else {
holder.mImageView.setVisibility(View.GONE);
}
convertView.setTag(R.id.tag_mediaitem_state_cache, state);
}
return convertView;
}
你可以把已播放歌曲列表缓存在本地。然后写一个监听本地缓存列表,更新数据到前台。