我有一个歌曲列表,想要突出显示当前正在播放的歌曲(更改背景)。当我的歌曲结束并转到下一首歌时,它应该能够改变背景。我还希望背景改变时我选择任何列表视图项。 有人可以指导我如何推进这一进程。 代码: -
我对这段代码有所了解,但不止一个列表项颜色正在改变
@Override
public void bindView(View view, Context context, Cursor cursor) {
// TODO Auto-generated method stub
super.bindView(view, context, cursor);
final View vi=inflater.inflate(layout, null, false);
TextView titleS=(TextView)view.findViewById(R.id.TitleSong);
TextView artistS=(TextView)view.findViewById(R.id.Artist);
int Title_index;
int Artist_index;
Title_index=cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
Artist_index=cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
titleS.setText(cursor.getString(Title_index));
artistS.setText(cursor.getString(Artist_index));
if(cursor.getPosition()==MainActivity.songPosition){
titleS.setBackgroundColor(Color.BLUE);
}
}
答案 0 :(得分:0)
我建议您在适配器中有一个包含当前歌曲索引的字段,并根据该索引选择背景。然后当歌曲停止播放时你可能会有某种回调,所以你可以增加这个索引并在适配器上调用notifyDataSetChange()
来重绘你的视图。
最后一点,当您选择列表项时,您应该将当前歌曲索引更改为所选项目的索引,并且还要调用notifyDataSetChange()
。
这是一些代码
getView(int position, View convertView, ViewGroup parent) {
//initialize view
if (position == currentSongPosition) {
yourView.setBackground(...);
}
yourView.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
currentSongPosition = position;
notifyDataSetChange();
}
});
}