@Override public void onItemRangeInserted(final ObservableList<T> sender, final int positionStart, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { for (int i = positionStart; i < positionStart + itemCount; ++i) listener.container.addView(listener.getView(i, null)); } else { sender.removeOnListChangedCallback(this); } }
@Override public void onItemRangeRemoved(final ObservableList<T> sender, final int positionStart, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { listener.container.removeViews(positionStart, itemCount); } else { sender.removeOnListChangedCallback(this); } } }
@Override public void onChanged(final ObservableList<T> sender) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { // TODO: recycle views listener.container.removeAllViews(); for (int i = 0; i < sender.size(); ++i) listener.container.addView(listener.getView(i, null)); } else { sender.removeOnListChangedCallback(this); } }
@Override public void onChanged(final ObservableList<E> sender) { final ObservableKeyedRecyclerViewAdapter adapter = weakAdapter.get(); if (adapter != null) adapter.notifyDataSetChanged(); else sender.removeOnListChangedCallback(this); }
@Override public void onChanged(final ObservableList<PeerProxy> sender) { @Nullable final PeerProxy peerProxy = weakPeerProxy.get(); if (peerProxy == null) { sender.removeOnListChangedCallback(this); return; } peerProxy.setTotalPeers(sender.size()); }
@Override public void onItemRangeChanged(final ObservableList<T> sender, final int positionStart, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { for (int i = positionStart; i < positionStart + itemCount; ++i) { final View child = listener.container.getChildAt(i); listener.container.removeViewAt(i); listener.container.addView(listener.getView(i, child)); } } else { sender.removeOnListChangedCallback(this); } }
@Override public void onItemRangeMoved(final ObservableList<T> sender, final int fromPosition, final int toPosition, final int itemCount) { final ItemChangeListener<T> listener = weakListener.get(); if (listener != null) { final View[] views = new View[itemCount]; for (int i = 0; i < itemCount; ++i) views[i] = listener.container.getChildAt(fromPosition + i); listener.container.removeViews(fromPosition, itemCount); for (int i = 0; i < itemCount; ++i) listener.container.addView(views[i], toPosition + i); } else { sender.removeOnListChangedCallback(this); } }
void setList(@Nullable final ObservableList<T> newList) { if (list != null) list.removeOnListChangedCallback(callback); list = newList; if (list != null) { list.addOnListChangedCallback(callback); callback.onChanged(list); } else { container.removeAllViews(); } }
public void unbind() { if (owner == null) return; final InterfaceProxy interfaze = owner.getInterface(); final ObservableList<PeerProxy> peers = owner.getPeers(); if (interfaceDnsListener != null) interfaze.removeOnPropertyChangedCallback(interfaceDnsListener); if (peerListListener != null) peers.removeOnListChangedCallback(peerListListener); peers.remove(this); setInterfaceDns(""); setTotalPeers(0); owner = null; }