Как отобразить изображение из URL в textView - PullRequest
2 голосов
/ 11 декабря 2011

У меня есть textView. В моем коде я добавляю несколько строк текста. Я также хочу отобразить изображение между внешним URL-адресом (не из папки ресурсов), расположенным между этими строками. Все является динамическим, то есть сгенерированный текст и URL-адрес изображения будут сгенерированы в потоке. Так что мне нужно получить изображение через мой код и добавить его.

Хотите знать, есть ли способ вставить изображения с внешнего URL в текстовом представлении? Также всегда приветствуется любой лучший подход.

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Вам придется использовать это вместе с асинхронной задачей, открыть соединение в doInbackground() установить изображение для просмотра текста в 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);
        } 

надеюсь, это поможет

0 голосов
/ 11 декабря 2011

Вы, вероятно, захотите использовать асинхронную задачу для захвата изображения. Это будет работать в фоновом режиме из ваших других задач. Ваш код может выглядеть примерно так:

    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...
    }
...