/ / मैं पृष्ठ को पुनः लोड किए बिना एक सूची दृश्य को रीफ्रेश करना चाहता हूं - एंड्रॉइड, एंड्रॉइड-लेआउट, एंड्रॉइड-इरादा, एंड्रॉइड-विजेट

मैं पृष्ठ को पुनः लोड किए बिना सूची दृश्य को रीफ्रेश करना चाहता हूं - एंड्रॉइड, एंड्रॉइड-लेआउट, एंड्रॉइड-मंशा, एंड्रॉइड-विजेट

मैं एक ताज़ा करने के लिए देख रहा हूँ ListView पेज को पुनः लोड किए बिना। अधिक सटीक मेरे पास एक सेवा है जो एक के लिए डेटा भेज रही है ListView एक में Activity, हालांकि Activity बहुत पहले लोड करता है Service डेटा प्राप्त कर सकते हैं। इसलिए मुझे लोड / पुनः लोड करने में सक्षम होना चाहिए ListView के बाद Activity पहले ही लोड हो चुका है

उत्तर:

उत्तर № 1 के लिए 1

मैने पाया कि notifyDataSetChanged केवल तभी काम करता है जब आप इसका उपयोग करते हैं add, insert, remove, तथा clear पर काम करता है Adapter, इसलिए मैंने इसे एक ही कार्यान्वयन में निम्नलिखित तरीके से कर दिया:

एक AsyncTask सभी डेटा लाता है doInBackground। फिर, जब समाप्त हो गया तो मैंने पहली बार सूची एडाप्टर सेट किया onPostExecute। उपयोगकर्ता को यह जानने के लिए कि कुछ लोड हो रहा है, मैंने बस एक डाल दिया TextView के ऊपर Listview और इसके पाठ को "लोड हो रहा है .." में सेट करें onPreExecute और फिर इसे अदृश्य बनाओ onPostExecute जब डेटा तैयार हो जाता है।

यदि आपको डेटा रीफ्रेश करने की आवश्यकता है, तो आप बस निष्पादित करें AsyncTask फिर।

मुझे इस तरह से पसंद है क्योंकि आप केवल सेटिंग कर रहे हैं ArrayAdapter एक बार (यानी जब आप अंत में सभी डेटा प्राप्त करते हैं)। यहाँ यदि आपको इसकी आवश्यकता हो तो AsyncTask पर अधिक है। दस्तावेज़ों में कुछ अच्छा उदाहरण कोड है।


उत्तर № 2 के लिए 1

कॉल notifyDataSetChanged() पर ListView"रों Adapter जब भी आप इसे रीफ्रेश करना चाहते हैं।


उत्तर № 3 के लिए 1

मैं उपयोग करने के लिए कहूंगा IntentService के बजाय Service। का उपयोग करके IntentService आप पृष्ठभूमि में डेटा भेजने में सक्षम होंगे Service और एक फायरिंग के दौरान अद्यतन डेटा भी प्राप्त करते हैं BroadCastReceiver अपने यूआई को अपडेट करने के लिए। यहाँ एक पूर्ण उदाहरण है कि आप अपने कार्य को कैसे प्राप्त कर सकते हैं IntentService.