6

मेरे पास बैकएंड एपीआई एंडपॉइंट है जो कुछ सेटों में JSON देता है। प्रत्येक सेट में 10 lines of Json होता है।डिवाइस स्क्रीनसाइज के अनुसार RecyclerView का उपयोग कैसे करें?

उदाहरण के लिए: curl http://www.something.com?getData=0first 10 elements दे देंगे और curl http://www.something.com?getData=1 अगले सेट और इतने पर वापस आ जाएगी।

मैं RecyclerView और StaggeredGridView का उपयोग endpoints से डेटा लोड करने के लिए कर रहा हूं। अभी मैं केवल पहला सेट ला रहा हूं और यह पूरी तरह से ठीक काम कर रहा है।

मैं क्या देख रहा हूं?

Android में स्क्रीन आकारों के अनुसार मैं RecyclerView में डेटा कैसे लोड कर सकता हूं। उदाहरण के लिए:

मान लें कि डिवाइस hdpiRecyclerView में 25 staggeredGridView लोड करने में सक्षम हो सकता है। अनुक्रम में तो, यहाँ endpoints अनुरोध:

http://www.something.com?getData=0 // will fetch 0-10 
http://www.something.com?getData=10 // will fetch 11-20 
http://www.something.com?getData=10&skip=5 // will fetch 21-25 

कैसे मैं इस प्रक्रिया से ऊपर गतिशील बना सकते हैं। ताकि यह सभी स्क्रीन आकारों के लिए काम करेगा?

BTW यह मैं कैसे StaggeredGridView एडाप्टर में डेटा लोड हो रहा हूं:

mRecyclerView = (RecyclerView) mActivity.findViewById(R.id.staggering_grid); 
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); 
mAdapter = new StaggeredGridAdapter(mContext); 
mAdapter.addItems(response); 
mRecyclerView.setAdapter(mAdapter); 

संभव समाधान

  • अगर मैं पता चला है कि कितना Grid मैं तो डिवाइस के अनुसार भरने की जरूरत मिल गया मैं जब तक मैं अपेक्षित संख्या भरने के लिए डेटा प्राप्त नहीं कर लेता तब तक एक अनुरोध कर सकता हूं।
  • मैं डिवाइस स्क्रीन भरने तक एक और कॉल करने के लिए Retrofit पर अधिसूचना भेजने के लिए Event Bus का भी उपयोग कर सकता हूं।

क्या यह अच्छा दृष्टिकोण है? यदि हां तो मैं इसे कैसे प्राप्त कर सकता हूं?

+1

क्या यह हमेशा सबसे बड़ी स्क्रीन को भरने के लिए आवश्यकतानुसार कई आइटम प्राप्त करने का विकल्प है? जैसे xxxhpdi को स्क्रीन भरने के लिए 50 आइटम की आवश्यकता है, हमेशा 50 के बैचों में लाएं? छोटी स्क्रीनों को डेटा को कम से कम लाने की आवश्यकता होगी और दृश्य को भरने के लिए बड़ी स्क्रीन में पर्याप्त आइटम होंगे। –

+0

नहीं, यह संभव नहीं है। एंडपॉइंट हमेशा एक समय में 10 आइटम लौटाएगा। –

+0

@TimCastelijns लेकिन अगर मैं अनुक्रम में xxxhdpi के लिए 5 अनुरोध करता हूं और एक समय में डेटा लोड करता हूं तो क्या होगा? –

उत्तर

1

आप क्या कर सकते हैं 10 के बजाय एक समय में अतिरिक्त डेटा लोड करें, इस तरह आपके पास पूरे डिस्प्ले को पॉप्युलेट करने के लिए पर्याप्त डेटा है, यदि आपका एपीआई केवल आपको प्रति अनुरोध 10 आइटम प्राप्त करने देता है, तो आप एकाधिक विभिन्न धागे से अनुरोध और उन्हें अपने एडाप्टर में जोड़ें, और सभी अनुरोध सफलतापूर्वक किए जाने के बाद दृश्य को रीफ्रेश करें। तो इस तरह आपको सभी वस्तुओं के लिए अनुरोध करने की आवश्यकता नहीं है और किसी भी डिवाइस स्क्रीन सेटिंग में प्रदर्शन के लिए पर्याप्त आइटम हैं

+0

मैं यहां थोड़ा उलझन में हूं: मान लें कि मेरे पास दो डिवाइस 'xhdpi' और 'xxxhdpi' हैं। 'Xxxhdpi' में हम एक आइटम में स्क्रॉल किए बिना 50 आइटम लोड कर सकते हैं। आपके समाधान के अनुसार मैं अनुक्रमिक रूप से 5 अनुरोध करके पहले 50 आइटम लाऊंगा (मैं ऐसा कर सकता हूं क्योंकि यह बहुत अधिक समय लेने वाला नहीं है) और यदि उपयोगकर्ता स्क्रॉल करने का प्रयास करता है तो मैं अगले 50 आइटम लाऊंगा। लेकिन चलिए 'xhdpi' के लिए एक परिदृश्य लेते हैं जो एक समय में केवल 15 या 18 आइटम दिखा सकता है (बस अनुमान लगा रहा है)। मुझे यह कैसे पता चलेगा कि मुझे कौन से डिवाइस और प्रत्येक स्क्रॉल के लिए लाने की आवश्यकता है, मुझे –

+0

नहीं, जब आप अलग-अलग धागे में सभी अनुरोधों को आग लगाते हैं तो आदर्श रूप से आप उन्हें समानांतर में असीमित रूप से रखना चाहते हैं सफल प्रतिक्रियाओं के लिए एक काउंटर 5 सफल प्रतिक्रियाओं तक पहुंचने के बाद आप नए डेटा के साथ अपना दृश्य रीफ्रेश करते हैं और काउंटर रीसेट करते हैं। और यह कोई फर्क नहीं पड़ता कि डिवाइस का स्क्रीन आकार क्या है जब ADAPTER 'itemposition% 50-5' या किसी अन्य चीज को प्रदर्शित करने के लिए पहुंचता है जैसे आप अगले 50 आइटमों के लिए अनुरोध करना शुरू करते हैं और आप अनिश्चित प्रगति संवाद भी दिखा सकते हैं जैसे अधिकांश सर्वर पक्ष पेजिनेटेड सूची दृश्य – Bhargav

+0

अंत में मैं प्रत्येक कॉल में 50 आइटम लाने के आपके समाधान के साथ जा रहा हूं। क्या आप कृपया मुझे सुझाव दे सकते हैं या मुझे ट्यूटोरियल के लिए कोई लिंक दे सकते हैं कैसे अधिक कार्यक्षमता लोड करें सक्षम करें? –

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