Цвет фона элемента RecyclerView не обновляется должным образом
У меня есть просмотрщик для показа столов в ресторане, если у стола активный заказ, тогда я устанавливаю цвет фона на Янтарный. Более того, если я нажму на любую таблицу, ее фон должен стать серым (для этого я использую setSelected). Для некоторых элементов он работает нормально, но для некоторых фон элемента recyler становится янтарным, даже если у него нет ActiveOrder. Это происходит для столов рядом со столом, который на самом деле имеет активный порядок. Я не уверен, почему это происходит.
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 ответ
Решение
Я думаю, вам нужно сбросить фоновый цвет в другой части,
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);
}
}
);
}