這裏是我的代碼切換按鈕更改其狀態
@Override
public void onBindViewHolder(final RecyclerViewHolder holder, int position) {
final Songs songs = arrayList.get(position);
holder.favorite.setChecked(songs.getFavorite()); // this line makes me confusing.
holder.favorite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
int r = db.update_favorite(b,songs.getTitle(),songs.getArtist());
compoundButton.setChecked(b);
}
});
}
這裏的問題是,如果我有這個代碼
holder.favorite.setChecked(songs.getFavorite ());
到onBindViewHolder,當我改變切換按鈕的狀態,向下滾動,然後向上滾動,切換按鈕的狀態本身就是改變原來的狀態。爲了說明,當切換按鈕狀態從false變爲true並且用戶向上和向下滾動時,切換按鈕自動變爲原始狀態,其爲假。
如何使切換按鈕保持狀態的變化甚至用戶向下滾動?請幫幫我。
嘗試移除'compoundButton.setChecked(b);',因爲''favorite'已經'setChecked'。 – NamNH
@NNNNH感謝您的回覆。我試過你的答案,但它不起作用。 –