से चुने गए आइटम पर अपडेट रीसाइक्लर व्यू के लिए आवश्यक सुझाव, मैं रीसाइक्लिंग व्यू के लिए नया हूं। मेरी आवश्यकता निम्नानुसार है: - मुझे एक वेब सेवा कॉल करना है जो दो सरणी देगा। डेटा के साथ मुझे सूची में दिखाना होगा। इस उद्देश्य के लिए, मैं RecyclerView
का उपयोग कर रहा हूं। अन्य सरणी स्थिति की है, जो मैं स्पिनर में दिखा रहा हूं। यह वेब सेवा पेजिनेटेड है। मैंने अंकन जोड़ा है और यह ठीक काम कर रहा है। - जब उपयोगकर्ता स्पिनर से कुछ अन्य तत्व चुनता है, तो मुझे फिर से एक वेब सेवा कॉल करना होगा और रीसाइक्लर व्यू डेटा बदलना चाहिए। वर्तमान में, पृष्ठांकन मैं निम्नलिखित कर रहा हूँ के मामले में, एक बार मैं और अधिक डेटा लगातार पन्नों से मिलती है:एंड्रॉइड: स्पिनर
mAccountListingsAdapter.notifyItemRangeInserted(mAccountListingsAdapter.getItemCount(), mListings.size() - 1);
और, जब मैं स्पिनर से डेटा बदलने के लिए, मैं कर रहा हूँ निम्नलिखित:
mListings.clear();//Clear the data set
mAccountListingsAdapter.notifyDataSetChanged();//Call notify data set changed on recycler view adapter
getAccountListings();//Fetch new data from the web service and display in recycler view
लेकिन, यह सुझाव दिया जाता है कि, रीसाइक्लिंग व्यू एडाप्टर पर सीधेडेटाडेट चेंज() को सूचित करने के बजाय, प्रदर्शन और एनिमेशन समस्याओं से बचने के लिए, किसी को विशिष्ट NOTifyXXX विधि को कॉल करना चाहिए।
तो, मुझे संदेह है, अगर मैं स्पिनर के onItemSelected()
में रीसाइक्लर व्यू एडाप्टर को सूचित करने का अधिकार कर रहा हूं, या इसे बदला जाना चाहिए।
पीएस मैं onItemSelected
में निम्नलिखित की कोशिश की:
int size = mListings.size();
mListings.clear();
mAccountListingsAdapter.notifyItemRangeRemoved(0, size - 1);
लेकिन तब यह दुर्घटनाग्रस्त हो गया निम्न अपवादों के साथ:
03-02 12:59:41.046: E/AndroidRuntime(4270): java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 4(offset:0).state:5
+1 मेरी गलती अभिषेक - मैंने अपना जवाब लिखना शुरू कर दिया और आखिरकार इसे पोस्ट करने से पहले ब्रेक लिया। मेरे साथ ऐसा नहीं हुआ कि किसी और ने इस बीच एक जवाब पोस्ट किया होगा। अभी के लिए, मैं उत्तर प्रदान की गई दूसरी जानकारी के लिए पोस्ट रखूंगा। – Vikram
@ विक्रम निश्चित। कोई बात नहीं। –