कुछ संदर्भों में यह पता लगाना आवश्यक है - सूची सूची में, सूची के बारे में नियंत्रण के बिना - एक "सभी डेटा स्वैप आउट", f.i. जब हमें चयन जैसे कुछ राज्य को साफ़ करने की आवश्यकता होती है - पूरी तरह से नए डेटा पर पुराना राज्य व्यर्थ है।पर्यवेक्षण सूची: एक सेट को विश्वसनीय रूप से कैसे पहचानें?
पूरी तरह से नया डेटा
- list.setAll (...) द्वारा पहुंचा जा सकता
- list.set (otherObservableList) यदि सूची एक ListProperty
के प्रकार के बारे में सोच है परिवर्तन सेट पर निकाल दिया जा सकता है (सी परिवर्तन है, आइटम उपनिवेशों की गिनती के लिए "सबचेंजकाउंट" छद्म कोड है):
// initially empty
assertEquals(0, items.size());
items.setAll(1, 2, 4);
assertEquals(1, c.subChangeCount());
assertTrue(c.wasAdded() && !c.wasReplaced());
assertEquals(0, c.getFrom());
assertEquals(c.getList().size(), c.getAddedSize());
// initially not empty
assertTrue(items.size() > 0);
items.setAll(1, 2, 4);
assertEquals(1, c.subChangeCount());
assertTrue(c.wasReplaced());
assertEquals(0, c.getFrom());
assertEquals(c.getList().size(), c.getAddedSize());
इस तरह एक उपयोगिता की जांच की अनुमति के लिए लगता है:
boolean wasSetOrClearedAll(Change c) {
if (c.getList().isEmpty()) return true;
c.next();
if (c.getAddedSize() == c.getList().size()) return true;
return false;
}
इसके विपरीत, आंतरिक fx कोड, f.i. ComboBox 'आइटम को सुनने में:
while (c.next()) {
comboBox.wasSetAllCalled = comboBox.previousItemCount == c.getRemovedSize();
...
}
comboBox.previousItemCount = getItemCount();
भंडार वर्ष ITEMCOUNT और कहा कि वर्तमान removedSize के खिलाफ (जो मैं के साथ असहज कर रहा हूँ, पुरानी स्थिति मेरे स्वाद के लिए बासी अभी तक भी अक्सर हो जाता है) की तुलना, फिर भी वहाँ एक अच्छी संभावना है कि मैं अपने दृष्टिकोण के साथ कुछ याद कर रहा हूँ।
प्रश्न है:
जो संदर्भ मेंमेरी उपयोगिता विधि विफल हो जाएगा (और कोर दृष्टिकोण सही ढंग से setAll का पता लगाने के हैं)?
आपके द्वारा उपयोग किए जाने वाले पर्यवेक्षण सूची का ठोस प्रकार क्या है? ऐसा लगता है कि ListProperty एक अमूर्त वर्ग है जो setAll (...) – Zeki
@zeki hmm घोषित नहीं करता है .. सभी पर्यवेक्षी सूची में एक सेट (टी ... आइटम) होना चाहिए - निश्चित रूप से असमर्थित हो सकता है, इसलिए इसे ले जाएं कार्यान्वित किया गया है (ListProperty कुछ खास नहीं है, यह बस इसकी बैकिंग सूची के सेट को रूट करता है) – kleopatra
उस स्थिति में, क्या आप ListProperty का विस्तार कर सकते हैं और सुपर विधि को कॉल करने से पहले एक ईवेंट ट्रिगर कर सकते हैं? – Zeki