2011-03-29 8 views
19

मैं ListView के लिए List<Contact> उदाहरण को बदलना, बदलना/पुनर्स्थापित करना चाहता हूं; Contact एक कस्टम सरणी एडाप्टर में दिखाने के लिए आइटम है।एंड्रॉइड - ListView एडाप्टर को सहेजने/पुनर्स्थापित करने का सही तरीका क्या है?

savingInstanceState.putSerializable(""+R.id.contactList, (Serializable)adapter.contacts()); 

फिर onRestoreInstanceState(Bundle savedInstanceState) में मैं बहाल करने और अनुकूलक सेट:

List<Contact> contacts = 
     (List<Contact>)savedInstanceState.getSerializable(""+R.id.contactList); 
    ContactListAdapter adapter = 
     new ContactListAdapter((Context)this, android.R.layout.simple_list_item_1, contacts); 
    contactList.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 

यह यह करने के लिए सही रास्ता है

मैं सूची onSaveInstanceState(Bundle savingInstanceState) गतिविधि विधि में अनुकूलक अंतर्निहित बचत कर रहा हूँ ?

क्या आपके पास बेहतर/बेहतर समाधान है?

धन्यवाद

+0

कहाँ से डेटा हो रही है? यदि यह पहले से ही डिवाइस पर है, तो बस इसे फिर से पूछें। – alexanderblom

+0

@ असंतुलन मैं असहमत हूं। जहां तक ​​मैं देख सकता हूं कि यह किस प्रकार के धागे से एडाप्टर डेटा अपडेट/अपडेट करता है या नहीं। धन्यवाद। –

+0

@alexanderblom डेटा इंटरनेट से आता है, लेकिन जब मैं अभिविन्यास बदलता हूं तो वे पहले से ही डिवाइस पर _are_ बदलते हैं; बस एडाप्टर के अंदर;) –

उत्तर

3
+0

मैंने पार्ससेल योग्य सामग्री को शामिल किए बिना किसी अन्य कस्टम ऑब्जेक्ट को सफलतापूर्वक सहेजा/बहाल कर दिया है। क्या इसका उपयोग करने के फायदे हैं (अतिरिक्त जटिलता)? –

+3

पारगम्य का उपयोग करना सबसे अधिक तेज़ और सरल डेटा वर्गों के लिए इसे जोड़ने में बहुत परेशानी नहीं है। जब यह जल्दी से गुजरने वाले राज्य के लिएRetainNonConfigurationInstance() पर लागू होता है। – alexanderblom

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