我正在使用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

最佳答案

您必须为奇数行和偶数行显式设置背景色。

这很重要,因为从奇数编号的行回收的一行将具有深色背景。如果该行恰好被重用以显示偶数行,则您将得到错误的背景色。

10-08 07:50