Class ObservableListBase<E>
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- javafx.collections.ObservableListBase<E>
Type Parameters:
E - the type of the elements contained in the List
All Implemented Interfaces:
Iterable<E>, Collection<E>, List<E>, Observable, ObservableList<E>
Direct Known Subclasses:
public abstract class ObservableListBase<E> extends AbstractList<E> implements ObservableList<E>
ObservableList implementations. The base class provides two functionalities for the implementing classes. - Listener handling by implementing
addListenerandremoveListenermethods.fireChange(javafx.collections.ListChangeListener.Change)method is provided for notifying the listeners with aChangeobject. - Methods for building up a
ListChangeListener.Changeobject. There are various methods callednext*, likenextAdd(int, int)for new items in the lists ornextRemove(int, java.lang.Object)for an item being removed from the list.These methods must be always enclosed in
beginChange()andendChange()block.See the example below.
public void removeOddIndexes() {
beginChange();
try {
for (int i = 1; i < size(); ++i) {
remove(i);
}
} finally {
endChange();
}
}
public void remove(int i) {
beginChange();
try {
E removed = ... //do some stuff that will actually remove the element at index i
nextRemove(i, removed);
} finally {
endChange();
}
} The try/finally blocks in the example are needed only if there's a possibility for an exception to occur inside a beginChange() / endChange() block Note: If you want to create modifiable ObservableList implementation, consider using ModifiableObservableListBase as a superclass.
Note: In order to create list with sequential access, you should override AbstractList.listIterator(), AbstractList.iterator() methods and use them in AbstractList.get(int), AbstractCollection.size() and other methods accordingly.
Since:
JavaFX 8.0
-
Field Summary
-
Fields inherited from class java.util.AbstractList
modCount
-
-
Constructor Summary
Constructors Constructor and Description ObservableListBase()
-
Method Summary
All MethodsInstance MethodsConcrete Methods Modifier and Type Method and Description booleanaddAll(E... elements)A convenient method for var-arg adding of elements.voidaddListener(InvalidationListener listener)Adds anInvalidationListenerwhich will be notified whenever theObservablebecomes invalid.voidaddListener(ListChangeListener<? super E> listener)Add a listener to this observable list.protected voidbeginChange()Begins a change block.protected voidendChange()Ends the change block.protected voidfireChange(ListChangeListener.Change<? extends E> change)Notifies all listeners of a changeprotected booleanhasListeners()Returns true if there are some listeners registered for this list.protected voidnextAdd(int from, int to)Adds a new add operation to the change.protected voidnextPermutation(int from, int to, int[] perm)Adds a new permutation operation to the change.protected voidnextRemove(int idx, E removed)Adds a new remove operation to the change with single item removed.protected voidnextRemove(int idx, List<? extends E> removed)Adds a new remove operation to the change with multiple items removed.protected voidnextReplace(int from, int to, List<? extends E> removed)Adds a new replace operation to the change.protected voidnextSet(int idx, E old)Adds a new set operation to the change.protected voidnextUpdate(int pos)Adds a new update operation to the change.voidremove(int from, int to)Basically a shortcut to sublist(from, to).clear() As this is a common operation, ObservableList has this method for convenient usage.booleanremoveAll(E... elements)A convenient method for var-arg usage of removaAll method.voidremoveListener(InvalidationListener listener)Removes the given listener from the list of listeners, that are notified whenever the value of theObservablebecomes invalid.voidremoveListener(ListChangeListener<? super E> listener)Tries to removed a listener from this observable list.booleanretainAll(E... elements)A convenient method for var-arg usage of retain method.booleansetAll(Collection<? extends E> col)Clears the ObservableList and add all elements from the collection.booleansetAll(E... elements)Clears the ObservableList and add all the elements passed as var-args.-
Methods inherited from class java.util.AbstractList
add, add, addAll, clear, equals, get, hashCode, indexOf, iterator, lastIndexOf, listIterator, listIterator, remove, removeRange, set, subList
-
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface javafx.collections.ObservableList
filtered, sorted, sorted
-
Methods inherited from interface java.util.List
add, add, addAll, addAll, clear, contains, containsAll, equals, get, hashCode, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
-
-
Constructor Detail
-
ObservableListBase
public ObservableListBase()
-
-
Method Detail
-
nextUpdate
protected final void nextUpdate(int pos)
Adds a new update operation to the change.Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
pos- the position in the list where the updated element resides.
-
nextSet
protected final void nextSet(int idx, E old)Adds a new set operation to the change. Equivalent tonextRemove(idx); nextAdd(idx, idx + 1);.Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
idx- the index of the item that was set
-
nextReplace
protected final void nextReplace(int from, int to, List<? extends E> removed)Adds a new replace operation to the change. Equivalent tonextRemove(from, removed); nextAdd(from, to);Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
from- the index where the items were replaced
-
nextRemove
protected final void nextRemove(int idx, List<? extends E> removed)Adds a new remove operation to the change with multiple items removed.Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
idx- the index where the items were removed
-
nextRemove
protected final void nextRemove(int idx, E removed)Adds a new remove operation to the change with single item removed.Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
idx- the index where the item was removed
-
nextPermutation
protected final void nextPermutation(int from, int to, int[] perm)Adds a new permutation operation to the change. The permutation on index"i"contains the index, where the item from the index"i"was moved.It's not necessary to provide the smallest permutation possible. It's correct to always call this method with
nextPermutation(0, size(), permutation);Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
from- marks the beginning (inclusive) of the range that was permutated
-
nextAdd
protected final void nextAdd(int from, int to)Adds a new add operation to the change. There's no need to provide the list of added items as they can be found directly in the list under the specified indexes.Note: needs to be called inside
beginChange()/endChange()block.Note: needs to reflect the current state of the list.
Parameters:
from- marks the beginning (inclusive) of the range that was added
-
beginChange
protected final void beginChange()
Begins a change block. Must be called before any of thenext*methods is called. For everybeginChange(), there must be a correspondingendChange()call.beginChange()calls can be nested in abeginChange()/endChange()block.See Also:
-
endChange
protected final void endChange()
Ends the change block. If the block is the outer-most block for theObservableList, theChangeis constructed and all listeners are notified.Ending a nested block doesn't fire a notification.
See Also:
-
addListener
public final void addListener(InvalidationListener listener)
Description copied from interface:ObservableAdds anInvalidationListenerwhich will be notified whenever theObservablebecomes invalid. If the same listener is added more than once, then it will be notified more than once. That is, no check is made to ensure uniqueness.Note that the same actual
InvalidationListenerinstance may be safely registered for differentObservables.The
Observablestores a strong reference to the listener which will prevent the listener from being garbage collected and may result in a memory leak. It is recommended to either unregister a listener by callingremoveListenerafter use or to use an instance ofWeakInvalidationListeneravoid this situation.Specified by:
addListenerin interfaceObservableParameters:
listener- The listener to register
-
removeListener
public final void removeListener(InvalidationListener listener)
Description copied from interface:ObservableRemoves the given listener from the list of listeners, that are notified whenever the value of theObservablebecomes invalid.If the given listener has not been previously registered (i.e. it was never added) then this method call is a no-op. If it had been previously added then it will be removed. If it had been added more than once, then only the first occurrence will be removed.
Specified by:
removeListenerin interfaceObservableParameters:
listener- The listener to remove
-
addListener
public final void addListener(ListChangeListener<? super E> listener)
Description copied from interface:ObservableListAdd a listener to this observable list.Specified by:
addListenerin interfaceObservableList<E>Parameters:
listener- the listener for listening to the list changes
-
removeListener
public final void removeListener(ListChangeListener<? super E> listener)
Description copied from interface:ObservableListTries to removed a listener from this observable list. If the listener is not attached to this list, nothing happens.Specified by:
removeListenerin interfaceObservableList<E>Parameters:
listener- a listener to remove
-
fireChange
protected final void fireChange(ListChangeListener.Change<? extends E> change)
Notifies all listeners of a changeParameters:
change-
-
hasListeners
protected final boolean hasListeners()
Returns true if there are some listeners registered for this list.
-
addAll
public boolean addAll(E... elements)
Description copied from interface:ObservableListA convenient method for var-arg adding of elements.Specified by:
addAllin interfaceObservableList<E>Parameters:
elements- the elements to addReturns:
true (as specified by Collection.add(E))
-
setAll
public boolean setAll(E... elements)
Description copied from interface:ObservableListClears the ObservableList and add all the elements passed as var-args.Specified by:
setAllin interfaceObservableList<E>Parameters:
elements- the elements to setReturns:
true (as specified by Collection.add(E))
-
setAll
public boolean setAll(Collection<? extends E> col)
Description copied from interface:ObservableListClears the ObservableList and add all elements from the collection.Specified by:
setAllin interfaceObservableList<E>Parameters:
col- the collection with elements that will be added to this observableArrayListReturns:
true (as specified by Collection.add(E))
-
removeAll
public boolean removeAll(E... elements)
Description copied from interface:ObservableListA convenient method for var-arg usage of removaAll method.Specified by:
removeAllin interfaceObservableList<E>Parameters:
elements- the elements to be removedReturns:
true if list changed as a result of this call
-
retainAll
public boolean retainAll(E... elements)
Description copied from interface:ObservableListA convenient method for var-arg usage of retain method.Specified by:
retainAllin interfaceObservableList<E>Parameters:
elements- the elements to be retainedReturns:
true if list changed as a result of this call
-
remove
public void remove(int from, int to)Description copied from interface:ObservableListBasically a shortcut to sublist(from, to).clear() As this is a common operation, ObservableList has this method for convenient usage.Specified by:
removein interfaceObservableList<E>Parameters:
from- the start of the range to remove (inclusive)
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.