0

我有一个歌曲列表,并想突出显示(更改背景)当前正在播放的歌曲。当我的歌曲完成并转到下一首歌曲时,它应该能够更改背景。我还希望在我选择任何歌曲时更改背景列表视图项。有人可以指导我如何继续前进。代码:-

我正在实现此代码,但不止一个列表项颜色正在改变

@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);
     }

}
4

1 回答 1

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();
          }
    });

}
于 2013-07-17T22:37:17.940 回答