Хорошо, у нас есть некоторые результаты, возвращающие набор заказов на акции, которые мы сделали.В зависимости от того, полностью ли зарегистрирован заказ на поставку, мы показываем фоновый цвет элемента строки зеленым или синим с помощью оператора if в адаптере.
Проблема в том, что при загрузке ордера правильно отображаются зеленым / синим цветом.Но когда вы прокручиваете вниз, синие становятся зелеными.(См. Изображения).Мы думаем, что это может быть изменение данных где-то, но не уверены, почему это происходит, поскольку мы просто прокручиваем страницу.
Код, который создает это:
StockOrdersFragment.java
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.stock_orders_layout, container, false);
listView = myView.findViewById(R.id.listView);
stockOrdersService = new StockOrdersService(this);
stockOrdersService.fetchFromServer(getActivity());
fetchStockOrders();
return myView;
}
public void fetchStockOrders()
{
stockOrders.clear();
RealmResults<StockOrder> savedStockOrders = stockOrdersService.all();
stockOrders.addAll(savedStockOrders);
StockOrdersAdaptor adaptor = new StockOrdersAdaptor(stockOrders, getActivity());
listView.setAdapter(adaptor);
}
@Override
public void ordersReceived() {
fetchStockOrders();
}
StockOrdersAdaptor.java (Бит, который делаетцвет)
lastPosition = position;
if(stockOrder != null){
viewHolder.stockOrderId.setText(String.valueOf(stockOrder.id));
viewHolder.supplierName.setText(stockOrder.supplier.name);
if (stockOrder.allItemsHaveBeenReceived()) {
convertView.setBackgroundResource(R.color.colorGreen);
}
}
// Return the completed view to render on screen
return convertView;
AllItemsHaveBeenRectained ()
public Boolean allItemsHaveBeenReceived()
{
for (StockOrderDetails detail: details) {
if (detail.quantity != detail.quantityReceived) {
return false;
}
}
return true;
}