मैं एक ताज़ा करने के लिए देख रहा हूँ 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
.