2017-04-11 64 views
0

我與播放歌曲列表視圖中,每行暫停按鈕.. 我不能有兩個暫停圖標(二播放的歌曲),在我的列表視圖所以我需要先重置所有這些圖標,然後將所選視圖設置爲暫停圖標.. 我該怎麼做?或者你能爲此提供更好的解決方案嗎?每個圖像視圖資源將裏面的ListView與點擊

這是我的代碼:

在模型類(產品):

public int currentPosition= -1; 

適配器

public interface PlayPauseClick { 
    void playPauseOnClick(int position); 
} 
private PlayPauseClick callback; 
public void setPlayPauseClickListener(PlayPauseClick listener) { 
    this.callback = listener; 
} 
. 
. 
. 


    holder.playPauseHive.setImageResource(product.getPlayPauseId()); 
    holder.playPauseHive.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (callback != null) { 
       callback.playPauseOnClick(position); 
       if (position == product.currentPosition) { 
        product.setPlayPauseId(R.drawable.ic_pause); 
        //set the image to pause icon 
       }else{ 
        //set the image to play icon 
        product.setPlayPauseId(R.drawable.ic_play); 
       } 
       notifyDataSetChanged(); 
      } 
     } 
    }); 

我的回調內部我活動

@Override 
public void playPauseOnClick(int position) { 
    final Product product = songList.get(position); 
    if(product.currentPosition == position){ 
     product.currentPosition = -1; //pause the currently playing item 
    }else{ 
     product.currentPosition = position; //play the item 
    } 
    this.adapter.notifyDataSetChanged(); 
} 

回答

0

對於我的情況,我使用一個變量來存儲當前正在播放的項目位置。讓我們說

int x = -1; //-1 can indicate nothing was currently playing 

所以在playPauseOnClick()你可以做這樣的

@Override 
public void playPauseOnClick(int position) { 
    if(x == position){ 
     x = -1; //pause the currently playing item 
    }else{ 
     x = position; //play the item 
    } 
    this.adapter.notifyDataSetChanged(); 
} 

什麼原因我刪除product.setPlayPauseId()是因爲你真的不需要它們。您只需根據您之前創建的x變量設置播放或暫停圖標。做這樣的事情在你的getView()

Product product = songList.get(position); 
if (position == x) { 

    //set the image to pause icon 
}else{ 
    //set the image to play icon 
} 

所以一旦你撥打adapter.notifyDataSetChanged()適配器會做所有的工作適合你。只要x變量的值爲-1,任何圖標都將顯示暫停圖標,這也可以確保只有一個位置也會顯示暫停圖標。

希望它能幫助你。

+0

我已經編輯我的代碼和我的問題根據你的答案,但仍然沒有機會.. – Majid