java - Why aren't my images downloading into ImageViews? -


मैं मूल एंड्रॉइड डेवलपमेंट के लिए बहुत नया हूँ।

  • प्रत्येक छवि के लिए ListView में ImageView जोड़ें

    मैंने JSON और अब ListView को पॉप्युलेट करने के लिए ImageAdapter (विस्तारित BaseAdapter ) का उपयोग करने पर काम कर रहा हूं, लेकिन मैं एक त्रुटि में चल रहा हूं:

    • मेरे OpenHttpGETConnection फ़ंक्शन में InputStream के निर्माण के दौरान मुझे println को एक संदेश की आवश्यकता है मिल रहा है।

      यहां मेरा कोड है (अनावश्यक कोड के साथ सबसे कम के लिए उच्चतम के क्रम में हटाया गया है):

      1. एक बार जब JSON मेरे onPostExecute लोड हो जाता है एडेप्टर शुरू करने के लिए कोड 'चलाएँ:

          निजी वर्ग डाउनलोड इमेजेसटेक्स्टकॉस्क एसिंकटस्क एंड लिट; स्ट्रिंग, वाइड, स्ट्रिंग & gt; {सुरक्षित स्ट्रिंग doInBackground (स्ट्रिंग ... यूआरएल) {return getImages (यूआरएल [0]); } @Override सुरक्षित शून्य पर PostExecute (स्ट्रिंग परिणाम) {JSONArray images = null; छवियाँ = नया JSONArray (परिणाम); // छवियों की सूची में छवियों को चालू करें सूची दृश्य सूची देखें = (सूची दृश्य) ढूंढें ViewById (R.id.list); @here ---- & gt; ListView.setAdapter (नया ImageAdapter (getBaseContext (), चित्र)); लॉग डी। ("डाउनलोडटेक्स्टटस्क", छवियों। टॉस्टिंग ()); }}    
      2. यह मेरा ImageAdapter कोड है:

          सार्वजनिक श्रेणी ImageAdapter BaseAdapter विस्तारित {निजी प्रसंग संदर्भ; निजी JSONArray छवियाँ; सार्वजनिक इमेजएडैप्टर (संदर्भ सी, जेसनअरेरे i) {संदर्भ = सी; चित्र = i; } // एक छविदृश्य दृश्य सार्वजनिक करता है देखें getView (इंट की स्थिति, कंटिव्यूव्यू देखें, ViewGroup पेरेंट) {ImageView imageView = नया ImageView (संदर्भ); कोशिश {स्ट्रिंग यूआरएल = "http://www.example.com/" + images.get (स्थिति); @here ---- & gt; imageView.setImageBitmap (getImageBitmap (यूआरएल)); } पकड़ (अपवाद ई) {लॉग डी। ("लोड इमेज", ई.ए.टी.ओ.ओलाक्लाइज्ड मेसेज ()); } ImageView.setScaleType (ImageView.ScaleType.FIT_XY); वापसी छवि देखें; }}    
      3. यहाँ मेरा getImageBitmap फ़ंक्शन है:

          निजी बिटमैप getImageBitmap (स्ट्रिंग यूआरएल) { बिटमैप बिटमैप = नल; InputStream इन = नल; कोशिश करें {@ यहां ---- & gt; = ओपन एचटीटीपीईटीकनेक्शन (यूआरएल) में; } पकड़ (अपवाद ई) {@i_get @this ---- & gt; लॉग। Wtf ("OpenGET", e.getMessage () + ":" + url); @error} बिटमैप = बिटमैपफ़ीचर। एसेडास्ट्रीम (इन); in.close (); वापसी बिटमैप; }    
      4. और अंत में, यह मेरा OpenHttpGETConnection फ़ंक्शन:

          सार्वजनिक स्थिर इनपुट पट्टी ओपन एचटीटीपीईटीईकनेक्शन (स्ट्रिंग) Url) {InputStream inputStream = null; एचटीटीपी क्लाइंट http क्लाइंट = नल; एचटीपीआरपीएसपैक्शन एचटीटीपीआरपीएस = नल; HttpClient = नया DefaultHttpClient (); HttpResponse = httpClient.execute (नया HttpGet (url)); इनपुटस्ट्रीम = httpResponse.getEntity ()। GetContent (); वापसी इनपुटस्ट्रीम; }    
      5. और यहां से संबंधित लॉगकैट लाइन है: (3 छवियों के लिए होती है जो JSON फ़ाइल के माध्यम से आई थी) < pre> <कोड> ए / OpenGETï¹ ?? Println को एक संदेश की आवश्यकता है: http://www.example.com/image1.jpg

        अजीब बात यह है, मैं वही OpenHttpGETConnection का उपयोग करता हूं जब मैं अपना JSON डेटा लोड करता हूं, तो मुझे पूरा यकीन है कि वह एक सही InputStream ऑब्जेक्ट वापस कर रहा है पाठ बनाम बाइनरी डेटा (जेपीजी) के लिए इसका उपयोग करते समय क्या कुछ चेतावनियां हैं?

        धन्यवाद अग्रिम में!

        एडाप्टर में सबसे पहले, getView () विधि में, आप आइटम रीसाइक्लिंग नहीं कर रहे हैं। ViewHolder पैटर्न पर एक नज़र डालें () फिर, getImageBitmap () उसी धागा पर निष्पादित होने लगता है, मुझे आश्चर्य है कि यह दुर्घटना क्यों नहीं करता। मुझे लगता है कि आप वास्तविक छवि डाउनलोड करते हैं इसे एसिंक्रोनस तरीके से किया जाना चाहिए, और आपको ImageView के संदर्भ भेजना चाहिए और जब डाउनलोड समाप्त हो गया है, तो आपको उसे इसमें लोड करना चाहिए बेशक आपको इसकी परवाह करना होगा कि जब आप बिटमैप को ImageView के अंदर डालते हैं तो स्क्रीन पर अच्छा ImageView है (क्योंकि पुनर्नवीनीकरण हो सकता है) इन सभी चिंताओं से छुटकारा पाने के लिए आप केवल पिकासो लाइब्रेरी () का उपयोग कर सकते हैं और जो आपके लिए यह सब करेंगे।

  • Comments

    Popular posts from this blog

    ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

    Matlab transpose a table vector -

    c# - Textbox not clickable but editable -