Search code examples
androidandroid-asynctaskandroid-imageviewandroid-image

Setting image from url to ImageView with AsynchTask


I have an image on my website, that I want to set on my ImageView. Do to that I needed to use an asynch task. I'm doing it like below. But new getThumbnail().execute(stringThumbnail); is throwing me the error getThumbnail cannot be resolved to a type. What am I doing wrong in here?

final ImageView thumbnail = (ImageView) findViewById(R.id.btnThumbnail);
String stringThumbnail = "myImage.jpg";
new getThumbnail().execute(stringThumbnail);        

        class getThumbnail extends AsyncTask<String, Void, Void> {

            protected Void doInBackground(String... data) {
                String thumb = data[0];
                try {
                  Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL("http://mySite.com/images/" + thumb).getContent());

                } catch (MalformedURLException e) {
                  e.printStackTrace();
                } catch (IOException e) {
                  e.printStackTrace();
                }
                return null;
            }

            protected void onPostExecute(Bitmap img) {
                // TODO: check this.exception 
                // TODO: do something with the feed
                thumbnail.setImageBitmap(img); 
            }
         }

Solution

  • The problem is in async task use it like this

    public class MainActivity extends Activity {
    
        private ImageView mThumbnail;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mThumbnail = (ImageView) findViewById(R.id.btnThumbnail);
            String stringThumbnail = "myImage.jpg";
            new getThumbnail().execute(stringThumbnail);
    
        }
    
        class getThumbnail extends AsyncTask<String, Void, Bitmap> {
    
            protected Bitmap doInBackground(String... data) {
                String thumb = data[0];
                Bitmap bitmap = null;
                try {
                    Log.d("TEST", "do in background");
                    bitmap = BitmapFactory
                            .decodeStream((InputStream) new URL(
                                    "http://mySite.com/images/" + thumb)
                                    .getContent());
    
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return bitmap;
            }
    
            protected void onPostExecute(Bitmap img) {
                Log.d("TEST", "post execute");
                mThumbnail.setImageBitmap(img);
            }
        }
    
    }
    

    also make sure that btnThumbnail is a imageView. Prefix btn is confusing and also declare the permission

    <uses-permission android:name="android.permission.INTERNET"/>
    

    in the manifest.xml