2017-02-22 16 views
0

Я новичок в android, я работаю над приложением. Я хочу загрузить изображение и показать его в элементе списка. Для этого я использовал много функций. Мой код работает без ошибок, но изображение не отображается на экране, которое является частью моего кода.Скачивание изображения и загрузка его в виде изображения в списке

public loader(Context context, String[] img) { 
     super(context, R.layout.item, img); 

     this.context = context; 
     this.img = img; 

     inflater = LayoutInflater.from(context); 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // ImageView imgshow = (ImageView) findViewById(R.id.image1); 

     if (null == convertView) { 
      convertView = inflater.inflate(R.layout.item, parent, false); 

     } 
     ImageView imageView = (ImageView) convertView.findViewById(R.id.imageview); 
     //first method 
     // Glide.with(context) 
     // .load(img[position]) 
     //.into(imageView); 
     //second method 
     DownloadImageTask download=new DownloadImageTask((ImageView) convertView.findViewById(R.id.imageview)); 
     download.execute("http://previews.123rf.com/images/faysalfarhan/faysalfarhan1402/faysalfarhan140200008/25989999-Back-left-arrow-icon-glossy-purple-button-Stock-Photo.jpg"); 
     //new DownloadImageTask((ImageView) convertView.findViewById(R.id.imageview)) 
     //.execute(img[position]); 
     //third method 
     //Picasso.with(context).load(img[position]).into(imageView); 
     //Log.e("image_url","https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Square_200x200.svg/1024px-Square_200x200.svg.png"); 
     return convertView; 





    } 
    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
     ImageView bmImage; 
     TextView t; 


     public DownloadImageTask(ImageView bmImage) { 
      this.bmImage = bmImage; 
     } 

     protected Bitmap doInBackground(String... urls) { 
      String urldisplay = "http://previews.123rf.com/images/faysalfarhan/faysalfarhan1402/faysalfarhan140200008/25989999-Back-left-arrow-icon-glossy-purple-button-Stock-Photo.jpg"; 

      Bitmap mIcon11 = null; 
      // Toast.makeText(mainpage.this ,urldisplay ,Toast.LENGTH_SHORT).show(); 

      TextView t=(TextView)findViewById(R.id.texttt); 
      // t.setText(urldisplay); 

      try { 


       InputStream in = new java.net.URL(urldisplay).openStream(); 
       mIcon11 = BitmapFactory.decodeStream(in); 
      } catch (Exception e) { 
       Log.e("Error", e.getMessage()); 
       e.printStackTrace(); 
      } 
      return mIcon11; 
     } 

     protected void onPostExecute(Bitmap result) { 
      bmImage.setImageBitmap(result); 


     } 
    } 


} 

Я положил, что в моем списке, используя (IMG это массив строк, я Сохранить URL в нем и отображать их, но для тестирования я заменить его на один URL изображения внутри класса загрузчика)

String[] img = new String[1000]; 
    loader im=new loader(mainpage.this,img); 

    lv.setAdapter(im); 
+0

Вы должны использовать picasso или Glide для кэширования и загрузки изображения. – Piyush

+0

http://stackoverflow.com/a/9288544/7320259 Проверьте это –

+0

Просто передайте изображениеПросмотрите сначала объявление в DownloadImageTask следующим образом: 'DownloadImageTask download = new DownloadImageTask (imageView);' –

ответ

0

вам не может установить изображение в ImageView напрямую. вы должны преобразовать это изображение в Bitmap, а затем установить

public static Bitmap getBitmapFromURL(String src) { 
    try { 
     Log.e("src",src); 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     Log.e("Bitmap","returned"); 
     return myBitmap; 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("Exception",e.getMessage()); 
     return null; 
    } 
} 

, а затем установить в ImageView:

imageView.setImageBitmap(getBitmapFromURL(url)); 

попробовать эту надежду, что помогает вам

0

Используйте piccasso.

Чтобы использовать piccasso, чтобы добавить его добавить

compile 'com.squareup.picasso:picasso:2.5.2' 

Для вашего уровня приложения Gradle. И использование этого метода

Picasso.with(context).load("http://previews.123rf.com/images/faysalfarhan/faysalfarhan1402/faysalfarhan140200008/25989999-Back-left-arrow-icon-glossy-purple-button-Stock-Photo.jpg").into(imageview); 

или, возможно, ваш GetCount() возвращает 0. (Или добавить) изменить его

@Override 
    public int getCount() { 
     return img.length; 
    } 
+0

i использовал это, но нет изображения –

+0

Я не понимаю, что такое счет?! –

+0

@ShoroukAdel это метод переопределения в адаптерах –

0
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 
+1

Подумайте о том, чтобы добавить описание и комментарии к вашему ответу. –

0

Использование Glide

зависимость для скольжения: компилировать 'com.github.bumptech.glide: скольжению: 3.7.0'

и добавить код

ImageView imageView = (ImageView) findViewById(R.id.my_image_view); 

    Glide.with(this).load("https://s3-us-west-1.amazonaws.com/powr/defaults/image-slider2.jpg").into(imageView); 
+0

Я использовал это, но не отображал изображение в представлении изображения в списке. Хотя я использовал для отображения изображения из списка, и он работал, но внутри списка не было –

+0

: [https://futurestud.io/tutorials/glide- listadapter-ListView-GridView] –

Смежные вопросы