RecyclerView 项目的背景颜色未正确更新

RecyclerView Item's Background Color Not Getting Updated Properly

我有一个 recyclerview 在餐厅显示 tables,如果 table 有有效订单,那么我将背景颜色设置为琥珀色。 此外,如果我点击任何 table,它的背景应该变成灰色(我为此使用 setSelected) 它适用于某些项目,但对于某些项目,回收站项目的背景变为琥珀色,即使它没有 ActiveOrder。它发生在 table 附近的 table,实际上有一个活动订单。 我不确定为什么会这样。

OnBindViewMethod:

public void onBindViewHolder(TableItemViewHolder holder, int position) {
    Table table = mTableList.get(position);
    holder.mTableNameTextView.setText(table.getTableName());
    holder.tableItemLayout.setSelected(selectedPosition==position);
    if(table.getOrderID()!=0 && selectedPosition!=position)
    {
        Log.i("OrderId",table.getTableName()+table.getOrderID());
        holder.tableItemLayout.setBackgroundColor(mContext.getResources().getColor(R.color.colorAmber));
    }
    holder.tableItemLayout.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    notifyItemChanged(selectedPosition);
                    selectedPosition = position;
                    notifyItemChanged(selectedPosition);
                }
            }
    );
}

我认为你需要在 else 部分重新设置背景颜色,

public void onBindViewHolder(TableItemViewHolder holder, int position) {
    Table table = mTableList.get(position);
    holder.mTableNameTextView.setText(table.getTableName());
    holder.tableItemLayout.setSelected(selectedPosition==position);
    if(table.getOrderID()!=0 && selectedPosition!=position)
    {
        Log.i("OrderId",table.getTableName()+table.getOrderID());
        holder.tableItemLayout.setBackgroundColor(mContext.getResources().getColor(R.color.colorAmber));
    }else{
// Reset background color
}
    holder.tableItemLayout.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    notifyItemChanged(selectedPosition);
                    selectedPosition = position;
                    notifyItemChanged(selectedPosition);
                }
            }
    );
}