动态更改列表视图项目背景

时间:2013-07-17 22:25:42

标签: android list listview cursor background-color

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

我对这段代码有所了解,但不止一个列表项颜色正在改变

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

}

1 个答案:

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

}