मेरे पास बैकएंड एपीआई एंडपॉइंट है जो कुछ सेटों में JSON
देता है। प्रत्येक सेट में 10 lines of Json
होता है।डिवाइस स्क्रीनसाइज के अनुसार RecyclerView का उपयोग कैसे करें?
उदाहरण के लिए: curl http://www.something.com?getData=0
first 10 elements
दे देंगे और curl http://www.something.com?getData=1
अगले सेट और इतने पर वापस आ जाएगी।
मैं RecyclerView
और StaggeredGridView
का उपयोग endpoints
से डेटा लोड करने के लिए कर रहा हूं। अभी मैं केवल पहला सेट ला रहा हूं और यह पूरी तरह से ठीक काम कर रहा है।
मैं क्या देख रहा हूं?
Android
में स्क्रीन आकारों के अनुसार मैं RecyclerView
में डेटा कैसे लोड कर सकता हूं। उदाहरण के लिए:
मान लें कि डिवाइस hdpi
RecyclerView
में 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
का भी उपयोग कर सकता हूं।
क्या यह अच्छा दृष्टिकोण है? यदि हां तो मैं इसे कैसे प्राप्त कर सकता हूं?
क्या यह हमेशा सबसे बड़ी स्क्रीन को भरने के लिए आवश्यकतानुसार कई आइटम प्राप्त करने का विकल्प है? जैसे xxxhpdi को स्क्रीन भरने के लिए 50 आइटम की आवश्यकता है, हमेशा 50 के बैचों में लाएं? छोटी स्क्रीनों को डेटा को कम से कम लाने की आवश्यकता होगी और दृश्य को भरने के लिए बड़ी स्क्रीन में पर्याप्त आइटम होंगे। –
नहीं, यह संभव नहीं है। एंडपॉइंट हमेशा एक समय में 10 आइटम लौटाएगा। –
@TimCastelijns लेकिन अगर मैं अनुक्रम में xxxhdpi के लिए 5 अनुरोध करता हूं और एक समय में डेटा लोड करता हूं तो क्या होगा? –