Как вернуться из Glide на ResourceReady - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь вернуть строку s[0] после Glide onResourceReady, но оператор return выполняется до onResourceReady метода, поэтому теперь я хочу вернуть строку из Glide onResourceReady, но она не работает.

Как заставить onResourceReady вернуть строку?

Пожалуйста, помогите мне.

private String storeToLocalDisk(String urlS, final int id) {

    final String[] s = new String[1];

    Glide.with(getContext()).asBitmap().load(urlS).into(new SimpleTarget<Bitmap>() {
        @Override
        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
            s[0] = saveToInternalStorage(resource,id);
            return s[0]; // not working
        }
    });
   // return s[0];
}

1 Ответ

1 голос
/ 05 февраля 2020

Это return s[0]; не будет, потому что 1-е return s[0]; будет выполнено, тогда вы получите данные от Glide.

Я предложу использовать LiveData, например:

 //Create livedata variable 
 MutableLiveData<String> liveData;

 //then initialize this variable in oncreate or where you want just like this
 liveData= new MutableLiveData<>();

 //then set value to LiveData just like this
 liveData.setValue("set you value");

 //then Create observer for livedata. whenever data change in Livedata  onChanged method will call 
  Observer<String> observer= new Observer<String>() {
    @Override
    public void onChanged(@Nullable String s) {
       Log.e("dataChange",s);
    }
};

установите observer на livedata точно так же

  liveData.observe(this,observer):

Теперь наконец setvalue из livedata точно так же

liveData.setValue("set you value"); 

У меня было почти та же проблема, эта вещь работает для меня.

...