2017-09-21 19 views
5

मैं एक Activity कि 3 RecyclerViews शामिल है। मुझे दूरस्थ भंडार (3 अलग-अलग अनुरोध) से डेटा के साथ RecyclerViews पॉप्युलेट की आवश्यकता है। क्या मैं Activity में एकाधिक ViewModels का उपयोग कर सकता हूं, या क्या कोई बेहतर समाधान (सर्वोत्तम अभ्यास) है।गतिविधि

+0

एएसी के गूगल नमूना 1 LiveData साथ 1 RecyclerViews के उपयोग से पता चला है। यदि आप 3 रीसाइक्लर व्यू 3 लाइवडेटा –

उत्तर

5

इस मामले में मैं एक दृश्य मॉडल का उपयोग करने की अनुशंसा करता हूं जो तीन अलग-अलग लाइवडेटा ऑब्जेक्ट्स को पॉप्युलेट करता है। इस तरह यूआई अपडेट हो सकता है जब भी आपके तीन अनुरोधों में से एक प्रतिक्रिया प्राप्त हो जाती है। विवरण के लिए LiveData के साथ रीसाइक्लर व्यू का उपयोग कैसे करें Google Example पर एक नज़र डालें।

मैं गतिविधि प्रति एकाधिक ViewModels होने लगता है कि केवल जटिलता बढ़ जाती है और मुझे लगता है कि ऐसा करने में किसी भी मूल्य नहीं दिख रहा।

+1

के साथ करने का प्रयास करते हैं तो समस्या क्या है Google उदाहरण लिंक मर चुका है। –

+0

धन्यवाद, मैंने इसे – guglhupf

+0

@guglhupf अपडेट किया है ऐसा करने में एक मूल्य है: 'रीसाइक्लिंग व्यू' के बीच युग्मन घटाना और उन्हें स्वतंत्र रूप से पुन: उपयोग करने या किसी अन्य स्क्रीन पर जाने की क्षमता में वृद्धि करना। –

0

the open/closed principle के अनुसार, आप तीन अलग अलग ViewModel रों बनाना चाहिए। जटिलता में इतना वृद्धि नहीं हुई है, और आप एक ViewModel (या बस इसे पुन: उपयोग करें) को RecyclerView के साथ Activity पर आसानी से स्थानांतरित करने की क्षमता प्राप्त कर रहे हैं।

बेशक

, कभी कभी नियमों को तोड़ने समझ में आता है - उदाहरण के लिए यदि आप जानते हैं, वहाँ कोई संभावना नहीं है, कि RecyclerView पुन: उपयोग किया जाएगा या कोई अन्य स्क्रीन में ले जाया गया, और फिर आप एक ViewModel साथ सरल समाधान के लिए जा सकते हैं।

एक ही स्थिति है, तो ViewModel (यहां तक ​​कि 3 सूची के साथ) हमेशा बहुत ही सरल (सिर्फ तीन LiveData क्षेत्रों, बस कोड की कुछ लाइनें उन्हें पॉप्युलेट करने के लिए) रहने की संभावना है, तो आप इस नियम तोड़ सकते हैं।

हालांकि हे/सीपी के उल्लंघन एक अच्छा अभ्यास नहीं है - यह सिर्फ शासन के प्रति सचेत तोड़ने है।

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