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

时间:2018-01-29 20:27:12

标签: java android android-recyclerview recyclerview-layout

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

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);
                }
            }
    );
}

1 个答案:

答案 0 :(得分:0)

我认为您需要重置其他部分的背景颜色

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);
                }
            }
    );
}