android - एक रीसायकलदृश्य को SQLite डेटा



android-sqlite android-contentprovider (1)

एप में SQLite डेटाबेस में डेटा है यूआई मुख्य रूप से एक रीसायकलदृश्य है। प्रश्न मुख्य थ्रेड को छोड़कर, यूआई में डाटाबेस से डेटा को स्थानांतरित करने के लिए सबसे अच्छा कैसे होगा?

मैं मूल रूप से एक CursorLoader, ContentProvider, और RecyclerView का उपयोग करने की योजना बनाई थी लेकिन इसके चारों ओर पढ़ना ऐसा लगता है कि रीसाइक्लियर वीज़ में कर्सर-आपूर्ति की गई डेटा के लिए आउट-द-द-बॉक्स समर्थन नहीं है। डैंग।

तब मुझे कुछ अन्य विकल्पों के साथ छोड़ देता है ...

  1. डेटा को लोड करने के लिए AsyncTask, इसे मॉडल ऑब्जेक्ट में रखें, और रीसाइक्लिंगदृश्य एडाप्टर में पास करें। बदसूरत होने के अलावा, यह कॉन्फ़िग-परिवर्तन अनुकूल नहीं है

  2. एक कस्टम लोडर जो SQL से डेटा लोड करता है और उसे मॉडल ऑब्जेक्ट में धकेलता है।

  3. कर्सर लोडर का उपयोग करें, और जब यह मॉडल ऑब्जेक्ट्स में डेटा को पुश करने के लिए इसके माध्यम से कर्सर पुनरावृत्त करता है। मुझे संदेह है कि यह मुख्य धागा पर होता है और प्रदर्शन को नुकसान पहुंचा सकता है

  4. डेटा का अनुरोध करने के लिए एक अनुरोध संदेश भेजने के लिए ओटो का उपयोग करें, और फिर वापसी संदेश द्वारा एक मॉडल ऑब्जेक्ट संग्रह वापस लौटाएं। इसमें ~ 500 ऑब्जेक्ट हो सकते हैं, इसलिए मुझे लगता है कि मैं ओटो को इस तरह से दुरुस्त कर सकता हूं।

अगर मैं कर्सर के बजाय मॉडल ऑब्जेक्ट्स का संग्रह का उपयोग कर रहा हूं तो मुझे ContentProvider को कम लाभ मिलता है, और मैं भी डेटा परिवर्तनों पर स्वतः-रिफ्रेश (जो उपयोगी हो सकता है) के लिए UI के लिए क्षमता खो देता हूं।

इनमें से कोई भी विकल्प अपील नहीं करता है, क्या कोई बेहतर तरीका है? ऐप समय दबाव में है इसलिए इसे लागू करने के लिए काफी तेज़ होना चाहिए। दुर्भाग्य से यूआई को क्षैतिज रूप से स्क्रॉल करने की आवश्यकता होती है और केवल लॉलीपॉप को लक्षित करता है, इसलिए रिस्क्लेरदृश्य सूची सूची से बेहतर शर्त लगता है।


इस सरल एडाप्टर का उपयोग करें https://gist.github.com/shywim/127f207e7248fe48400b , वैकल्पिक रूप से आप android.support.v17.leanback.widget.ItemBridgeAdapter का उपयोग एंड्रॉइड। support.v17.leanback.widget.CursorObjectAdapter के साथ कर सकते हैं लेकिन स्वयं को क्यों बनाते हैं जीवन कठिन है?





android-cursorloader