How do I implement this image view in an async task?

后端 未结 3 484
故里飘歌
故里飘歌 2021-01-29 05:33

I have an url passed to an activity and I am trying to show the image from the url full screen, however it throws a main network thread exception.

From what I can find

相关标签:
3条回答
  • It should be something like this. In the doInBackground you get the image, and in the onPostExecute you set it

    private class DownloadFilesTask extends AsyncTask<String, Void, Bitmap>  {
         @Override
         protected Bitmap doInBackground(String... urls) {
              Bitmap bitmap = null; 
              try {
                  bitmap = BitmapFactory.decodeStream((InputStream)new URL(urls[0]).getContent());
              } catch (MalformedURLException e) {
                   e.printStackTrace();
              } catch (IOException e) {
                 e.printStackTrace();
              }
              return bitmap;
         }
         @Override
         protected void onPostExecute(Bitmap bitmap) {
            ImageView i = (ImageView)findViewById(R.id.imgView);
            i.setImageBitmap(bitmap);
         }
     }
    

    Then, you call it inside your onCreate method

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String url = getIntent().getStringExtra("SelectedImageURL");
        new DownloadFilesTask ().execute(url); 
    }
    
    0 讨论(0)
  • 2021-01-29 06:04

    Using Picasso after initializing yourImageView with findViewById();

    Picasso.with(context).load(url).into(yourImageView)
    
    0 讨论(0)
  • 2021-01-29 06:19

    Put your network task inside doInBackground() method of AsyncTask as follow:

    @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
    
    try {
            //ImageView i = (ImageView)findViewById(R.id.imgView);Put this line in onPreExecute() method
            Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(url).getContent());
           // i.setImageBitmap(bitmap);//and this one on postExecute() method
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题