我正在使用recycler-view
,并且我希望奇数行上的项目具有较深的色彩,现在我已经设法在OnBindViewHolder中做到这一点,但是问题是,如果我更改了DataSet,那么会有行堆叠彼此颜色相同
我知道如果使用notifyDataSetChanged
则应该修复它,但是据我了解,使用notifyDataSetChanged
效率不高,所以我正在寻找更好的方法来修复它。
提前非常感谢您。
public void onBindViewHolder(@NonNull StandingsHolder holder, int position) {
StandingsDetail currentStandingsDetail = standingsDetail.get(position);
String playerName = (position+1) + " " + currentStandingsDetail.player.getFirstName() + " " + currentStandingsDetail.player.getLastName();
holder.name.setText(playerName);
holder.rating.setText(String.valueOf(currentStandingsDetail.standings.getRating()));
holder.games.setText(String.valueOf(currentStandingsDetail.standings.getGames()));
holder.wins.setText(String.valueOf(currentStandingsDetail.standings.getWins()));
holder.losses.setText(String.valueOf(currentStandingsDetail.standings.getLosses()));
holder.goals.setText(String.valueOf(currentStandingsDetail.standings.getGoals()));
holder.assists.setText(String.valueOf(currentStandingsDetail.standings.getAssists()));
if(position % 2 == 1){
holder.itemView.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(context, R.color.dark_overlay)));
}
}
问题:
https://imgur.com/a/TBTipZS
最佳答案
您必须为奇数行和偶数行显式设置背景色。
这很重要,因为从奇数编号的行回收的一行将具有深色背景。如果该行恰好被重用以显示偶数行,则您将得到错误的背景色。