我有一个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);
}
}
);
}
答案 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);
}
}
);
}