android - Fetch Contact name and photo with cursor -
पब्लिक क्लास संपर्क LISTFragment ListFragment लागू करता है LoaderCallbacks & lt; कर्सर & gt ;, AdapterView.OnItemClickListener {निजी अंतिम स्ट्रिंग CURSOR_SORT_ORDER = Contacts.DISPLAY_NAME + "कोलेटेड स्थानीय एएससी"; निजी अंतिम स्ट्रिंग CURSOR_SELECTION = संपर्क। HAS_PHONE_NUMBER + "= 1"; निजी फाइनल अंतर CONTACT_ID_INDEX = 0; निजी फाइनल इंट CONTACT_KEY_INDEX = 1; निजी कर्सर एडाप्टर mAdapter; @Create पर सार्वजनिक शून्य को ओवरराइड करें (बंडल सहेजे गए इन्स्टैंसस्टेट) {सुपर.नक्रेट (सहेजे गए इन्स्टेंसस्टेट); // एक बार संदर्भ संदर्भ = getActivity () बनाने के लिए एडाप्टर बनाएं; इंट लेआउट = एंड्रॉइड। आर। लय आउट.simple_list_item_1; कर्सर सी = नल; // कोई कर्सर अभी तक नहीं है int flags = 0; // कोई ऑटो-requery नहीं! लोडर requeries mAdapter = नया सरल कर्सर एडाप्टर (संदर्भ, लेआउट, सी, FROM, TO, flags); } @ ओवररेइड सार्वजनिक शून्य पर दृश्यित किए गए (देखें दृश्य, बंडल सहेजे गए इन्स्टेंसस्टेट) {getListView ()। SetOnItemClickListener (यह); } @ ओवरराइड पब्लिक रिक्त ऑन एक्टिविटी क्रेटेड (बंडल सहेजे गए इन्स्टेंसस्टेट) {सुपर। ऑन-एक्टिविटी क्रिएट (सहेजे गए इन्स्टेंसस्टेट); // हर बार जब हम शुरू कर रहे हैं हमारे listadapter setListAdapter (mAdapter); // और लोडर मैनेजर को लोड लोडर प्रबंधक () लोड करना शुरू करने के लिए कहें। initLoader (0, रिक्त, यह); } // कॉलम से अनुरोध किया गया है डेटाबेस @ स्वीपरलिंट ("इनलाइनेड एपीआई") अंतिम स्थिर स्ट्रिंग [] प्रोजेक्शन = {संपर्क._ID, संपर्क। संपर्क .DISPLAY_NAME_PRIMARY: संपर्क .DISPLAY_NAME}; @SuppressLint ("InlinedApi") निजी स्थिर अंतिम स्ट्रिंग [] FROM = {com.ziepa.utils.Utils.hasHoneycomb ()? संपर्क .DISPLAY_NAME_PRIMARY: संपर्क .DISPLAY_NAME}; निजी स्थिर अंतिम अंतर [] TO = {android.R.id.text1}; @ ओवरराइड सार्वजनिक लोडर & lt; कर्सर & gt; onCreateLoader (int id, बंडल आर्ग्स) {// "संपर्क तालिका" उरी सामग्री से लोड करेंयूआरआई = संपर्क। CONTENT_URI; // कोई उप-चयन नहीं, कोई सॉर्ट ऑर्डर नहीं, बस हर पंक्ति / प्रक्षेपण का कहना है कि हम केवल _ID और नाम कॉलम को नए कर्सर लोडर (getActivity (), सामग्री यूआरआई, प्रोजेक्शन, कर्सर_एसएक्लेक्शन, रिक्त, CURSOR_SORT_ORDER लौटा चाहते हैं); } @ ओवरराइड पब्लिक वायड ऑनलोड लोडेड (लोडर & लेफ्टिनेंट; कर्सर & gt; लोडर, कर्सर डेटा) {// एक बार कर्सर लोड हो गया है, इसे एडाप्टर mAdapter.swapCursor (डेटा) को दें; } @ ओवरराइड पब्लिक व्हाइड ऑनलोडर रीसेट (लोडर & लेफ्टिनेंट; कर्सर & gt; लोडर) {// रीसेट पर किसी भी पुराने कर्सर को एमएडाप्टर.swapCursor (null); } @ ओवरराइड सार्वजनिक शून्य पर आईटेमक्लिक (एडाप्टरव्यू & lt;? & Gt; माता पिता, आइटम देखें, इंट की स्थिति, लंबी पंक्ति आईडी) {अंतिम कर्सर कर्सर = mAdapter.getCursor (); // चुने हुए संपर्क कर्सर को स्थानांतरित करें। MovoveToPosition (स्थिति); लंबे संपर्क आईडी = कर्सर.गेट लांग (CONTACT_ID_INDEX); स्ट्रिंग संपर्ककी = कर्सर.गेटस्ट्रिंग (CONTACT_KEY_INDEX); अंतिम यूआरआई से संपर्क करें यूरी = संपर्क.गेटलुकअपयूआरआई (संपर्क आईआईडी, संपर्ककी); // मुझे यहाँ क्या करना चाहिए? } मेरे पास इस खंड को एक गतिविधि में जोड़ दिया गया है, यह सफलतापूर्वक संपर्कों की एक सूची प्रदर्शित करता है (उनके नाम) OnItemClick विधि में, मुझे यकीन नहीं है कि मुझे चयनित संपर्क नाम और फ़ोटो प्राप्त करने के लिए क्या करना चाहिए था? क्या मुझे उरी से एक अन्य क्वेरी चलाने की ज़रूरत है या इस जानकारी को प्राप्त करने का एक सरल तरीका है।
आपका सबसे अच्छा शर्त कस्टम एडेप्टर का उपयोग करने के लिए हो सकता है - बेसएडैप्टर का विस्तार करें - जो आपको एडेप्टर GetItem ()
से ऑब्जेक्ट वापस कर सकता है I व्यक्तिगत रूप से इस कारण से कर्सर एडाप्टर पसंद नहीं करते मैं उन सभी क्षेत्रों के साथ एक सूची तैयार कर सकता है जिनसे आपको आसानी से पहुंचा जा सकता है, और फिर ऐडाप्टर getItem () में संपर्क मॉडल वापस कर दें।
Comments
Post a Comment