Load image from url

前端 未结 16 2181
独厮守ぢ
独厮守ぢ 2020-11-22 05:12

I have an image URL. I want to display an image from this URL in an ImageView but I am unable to do that.

How can this be achieved?

16条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-22 05:35

    The code below show you how to set ImageView from a url string, using RxAndroid. First, add RxAndroid library 2.0

    dependencies {
        // RxAndroid
        compile 'io.reactivex.rxjava2:rxandroid:2.0.0'
        compile 'io.reactivex.rxjava2:rxjava:2.0.0'
    
        // Utilities
        compile 'org.apache.commons:commons-lang3:3.5'
    
    }
    

    now use setImageFromUrl to set image.

    public void setImageFromUrl(final ImageView imageView, final String urlString) {
    
        Observable.just(urlString)
            .filter(new Predicate() {
                @Override public boolean test(String url) throws Exception {
                    return StringUtils.isNotBlank(url);
                }
            })
            .map(new Function() {
                @Override public Drawable apply(String s) throws Exception {
                    URL url = null;
                    try {
                        url = new URL(s);
                        return Drawable.createFromStream((InputStream) url.getContent(), "profile");
                    } catch (final IOException ex) {
                        return null;
                    }
                }
            })
            .filter(new Predicate() {
                @Override public boolean test(Drawable drawable) throws Exception {
                    return drawable != null;
                }
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer() {
                @Override public void accept(Drawable drawable) throws Exception {
                    imageView.setImageDrawable(drawable);
                }
            });
    }
    

提交回复
热议问题