में एक सूची बाध्यकारी डेटा के लिए सर्वोत्तम अभ्यास मुझे अपने ग्रहण आरसीपी आवेदन में डेटाबेस को समझने में परेशानी हो रही है। मैं बस को समझ नहीं सकता कि यह कैसे काम करने के लिए चाहिए था ..ग्रहण आरसीपी आवेदन
यहाँ है कि मैं क्या
मैं एक दृश्य जहां ग्रंथों की एक सूची प्रदर्शित किया जाना चाहिए है क्या करना चाहते है। ग्रंथों को एक साधारण List<String>
में "संग्रहीत" किया जाता है जो एकलटन के माध्यम से प्रदान किया जाता है (केवल प्रदर्शन उद्देश्य के लिए;))। तो जो भी ListProvider
का उपयोग करता है उसे ग्रंथों की सूची मिल जाएगी। जब सूची बदलती है तो मैं चाहता हूं कि मेरा दृश्य तालिका सामग्री को स्वचालित रूप से अपडेट कर दे।
यहाँ मैं अब तक
मेरी सूची प्रदाता क्या किया है एक Observable
कि पर्यवेक्षकों को सूचित करेंगे जब सूची में परिवर्तन है।
मेरे विचार में मैं सूची प्रदाता को देखने के लिए पर्यवेक्षक बनाता हूं और जब पर्यवेक्षक को अधिसूचित किया जाता है तो मैं अपना विचार रीफ्रेश करता हूं। देखने के लिए
public class ListProvider extends Observable {
private Stack<String> hist;
private static ListProvider instance;
// Singleton implementation
public static ListProvidergetInstance() {
if (null == instance) {
instance = new ListProvider
}
return instance;
}
public void add(String text) {
if (this.hist.size() == MAX_SIZE) {
this.hist.remove(MAX_SIZE-1);
}
this.hist.add(0, text);
// notify all observers
this.setChanged();
this.notifyObservers();
}
}
कोड:: ListProvider
के लिए
कोड
public class TestView extends ViewPart {
private TableViewer viewer;
[...]
class ViewContentProvider implements IStructuredContentProvider {
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
}
public void dispose() {
}
public Object[] getElements(Object parent) {
return ClipboardHistory.getInstance().getList().toArray();
}
}
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
IContentProvider contentProvider = new ViewContentProvider();
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setInput(getViewSite());
Observer listObserver = new Observer() {
@Override
public void update(Observable o, Object arg) {
// update the table viewer
viewer.refresh();
}
};
ListProvider.getInstance().addObserver(listObserver);
}
}
प्रश्न
Observer
और Observable
"सही" जिस तरह से उपयोग कर रहा है जा सकते हैं या मैं कर रहा हूँ करने के लिए कुछ भूल रहा हूं? मुझे यकीन नहीं है कि मैंने आरसीपी डाटाबेसिंग की अवधारणा को समझ लिया है ...
मुझे आपकी सूची में आइटमों के दायरे के बारे में निश्चित नहीं है, लेकिन क्या आपने एक सरल एसडब्ल्यूटी सूची (http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform जोड़ने) पर विचार किया है .doc.isv% 2Freference% 2Fapi% 2Forg% 2Feclipse% 2Fswt% 2Fwidgets% 2FList।एचटीएमएल) टेबलव्यूर इत्यादि के बजाय आपके दृश्य पर ऑब्जेक्ट – nbz
यह भी एक सूची व्यूअर (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc का उपयोग करना बेहतर हो सकता है। आईएसवी% 2 फ़्रीफर% 2 फ़ैपी% 2 फ़ोरग% 2 फ़्लेक्लीप्स% 2 फ़ेज़फ़ेस% 2 फ़्यूवरर्स% 2FListViewer.html) एक टेबल व्यूअर के बजाय। – nbz
इनपुट के लिए धन्यवाद। फिलहाल यह केवल एक सूची है लेकिन मैं बाद में अन्य कॉलम में अधिक डेटा जोड़ना चाहता हूं। सूची सूची का उपयोग करने के तरीके को सूची में बदलने के तरीके का उपयोग करना होगा? – Friederike