private void onListChanged() { Log.traceCall(); list.clear(); list.addAll( tradeManager .getTrades() .stream() .map(PendingTradesListItem::new) .collect(Collectors.toList())); // we sort by date, earliest first list.sort((o1, o2) -> o2.getTrade().getDate().compareTo(o1.getTrade().getDate())); // TODO improve selectedItem handling // selectedItem does not get set to null if we dont have the view visible // So if the item gets removed form the list, and a new item is added we need to check if the // old // selectedItem is in the new list, if not we know it is an invalid one if (list.size() == 1) onSelectTrade(list.get(0)); else if (list.size() > 1 && (selectedItem == null || !list.contains(selectedItem))) onSelectTrade(list.get(0)); else if (list.size() == 0) onSelectTrade(null); }
@Override protected void deactivate() { tradeManager.getTrades().removeListener(tradesListChangeListener); }
@Override protected void activate() { tradeManager.getTrades().addListener(tradesListChangeListener); onListChanged(); }