2017-03-20 9 views
5

आप एमवीपी पैटर्न में एडेप्टर का इलाज कैसे करते हैं? उदाहरण के लिए, इस प्रोजेक्ट में https://github.com/msahakyan/nested-recycler-view एक मूवीएडाप्टर है, https://github.com/msahakyan/nested-recycler-view/blob/master/app/src/main/java/com/android/msahakyan/nestedrecycler/adapter/MovieAdapter.java इस व्यक्ति के पास इस एडाप्टर में आइटम के रूप में एक पुनर्नवीनीकरण है, (यदि आप उसकी प्रोजेक्ट देखते हैं, तो उसने अपनी होम स्क्रीन में रीसाइक्लिविएव को नेस्टेड किया है।) क्योंकि उसके पास ऐसी कोई वस्तु है , वह सेवा कॉल और अन्य अधिसूचना कर रहा है, इस एडाप्टर में डेटा लोड कर रहा है (सेवा से लाना) इत्यादि। (संबंधित खंड/गतिविधि के लिए कोई संचार नहीं) जैसा कि आप देख सकते हैं, इस एडाप्टर को बहुत कुछ करना है। यदि आप ऐसा करेंगे, तो आप इसे एमवीपी पैटर्न में कैसे कार्यान्वित करेंगे? विशेष रूप से, इस संदर्भ में, क्या आपके पास एडाप्टर में प्रेजेंटर ऑब्जेक्ट होगा, या उस ऑब्जेक्ट को कॉल करने, अधिसूचना और लोड करने के लिए ऑब्जेक्ट देखें?एमवीपी पैटर्न में एडेप्टर की भूमिका?

उत्तर

13

एडाप्टर शुद्ध दृश्य परत है। किसी रीसाइक्लिंग व्यू व्यूहोल्डर में एक बटन पर एक क्लिक जैसे गतिविधि/फ्रैगमेंट पर क्लिक करके सभी इंटरैक्शन को मानचित्र करें और फिर उसे गतिविधि/फ्रैगमेंट के प्रस्तुतकर्ता को अग्रेषित करें।

RecyclerView एक छोटे से थोड़ा जटिल काम है क्योंकि ViewHolders स्क्रॉल आदि दौरान पुनर्नवीनीकरण किया जा सकता सड़क वापस "जनक" गतिविधि/टुकड़ा पर जाकर और इसी प्रस्तुतकर्ता यह बहुत आसान और त्रुटि एक ViewHolder अद्यतन करने के लिए संभावना है कर रहे हैं (यानी डिफ्यूट्स का उपयोग करके एनिमेशन के साथ)। एक व्यूहोल्डर को डेटा ऑब्जेक्ट प्रदर्शित करने के तरीके के रूप में लें, लेकिन व्यूहोल्डर को समन्वयित करने के लिए प्रत्येक व्यूहोल्डर के लिए प्रेजेंटर जोड़ें। असल में, केवल यह सुनिश्चित करें कि व्यूहोल्डर को डेटा ऑब्जेक्ट मिलता है जिसमें व्यूहोल्डर को प्रदर्शित करने की सभी जानकारी होती है लेकिन इस डेटा ऑब्जेक्ट को व्यूहोल्डर्स प्रेजेंटर द्वारा "नियंत्रित" नहीं किया जाता है। अन्यथा, आप एक गड़बड़ी के साथ समाप्त हो जाते हैं क्योंकि एक व्यूहोल्डर को अपने प्रेजेंटर द्वारा अपडेट किया जाता है, शायद व्यूहोल्डर को वास्तविक समय में पुनर्नवीनीकरण किया गया है, शायद एक स्क्रीन अभिविन्यास परिवर्तन हुआ है या शायद "पैरेंट" गतिविधि/फ्रैगमेंट प्रेजेंटर ने एडाप्टर के पूरे अपडेट को अपडेट किया है डेटासेट इत्यादि अपने आप को एक पक्ष बनाओ और केवल एक प्रेजेंटर का उपयोग करें "डेटा समन्वय/नियंत्रण" डेटा रीसाइक्लिंग व्यू को "माता-पिता" गतिविधि/फ्रैगमेंट प्रेजेंटर का उपयोग करके प्रदर्शित करना चाहिए।

+0

धन्यवाद, वास्तव में विचार मिला। –

संबंधित मुद्दे