How to display an image from an URL within textVie

2019-01-27 01:01发布

I have a textView. In my code I am adding some lines of text in it. I also want to display some image from an external URL (not from my resource folder) just in between those lines. Every thing is dynamic i.e. the text generated and the image URL will be generated on the flow.So i have to fetch the image through my code and add it.

Wondering if there is a way to insert images from external URL within text view? Also any better approach is always welcome.

2条回答
倾城 Initia
2楼-- · 2019-01-27 01:20

You will have to use this along with asynctask, open connection in doInbackground() set image to textview in onPostExecute()

  try {
        /* Open a new URL and get the InputStream to load data from it. */
        URL aURL = new URL("ur Image URL");
        URLConnection conn = aURL.openConnection();
        conn.connect();
        InputStream is = conn.getInputStream();
        /* Buffered is always good for a performance plus. */
        BufferedInputStream bis = new BufferedInputStream(is);
        /* Decode url-data to a bitmap. */
        Bitmap bm = BitmapFactory.decodeStream(bis);
        bis.close();
        is.close();

        Drawable d =new BitmapDrawable(bm);
       d.setId("1");
 textview.setCompoundDrawablesWithIntrinsicBounds(0,0,1,0);// wherever u want the image relative to textview
        } catch (IOException e) {
        Log.e("DEBUGTAG", "Remote Image Exception", e);
        } 

hope it helps

查看更多
一夜七次
3楼-- · 2019-01-27 01:31

You are going to probably want to use an asynctask to grab the image. This will run in the background from your other tasks. Your code may look something like this:

    public class ImageDownloader extends AsyncTask<String, Integer, Bitmap>{

    private String url;
    private final WeakReference<ImageView> imageViewReference;

    //a reference to your imageview that you are going to load the image to
    public ImageDownloader(ImageView imageView) {
        imageViewReference = new WeakReference<ImageView>(imageView);
    }

    @Override
    protected Bitmap doInBackground(String... arg0) {
        if(isCancelled())
            return null;
        Bitmap retVal;

        url = arg0[0];//this is the url for the desired image
        ...download your image here using httpclient or another networking protocol..
        return retVal;
    }
    @Override
    protected void onPostExecute(Bitmap result) {
        if (isCancelled()) {
            result = null;
            return;
        }
        ImageView imageView = imageViewReference.get();
        imageView.setImageBitmap(result);
    }
    @Override
    protected void onPreExecute() {
        ...do any preloading you might need, loading animation, etc...
    }
查看更多
登录 后发表回答