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