2016-05-09 5 views
1

Обычно, если я хочу, чтобы загрузить изображение с Glide я бы написать следующее:Загружает изображение в MenuItem с помощью Glide

Glide.with(context) 
    .load(theURLOftheImage) 
    .error(R.drawable.ic_error_image) 
    .into(theImageView); 

но что, если мне нужно, чтобы загрузить изображение этого URL в MenuItem который должен быть изменен в режиме реального времени?

Следующая не представляется возможным, так как метод into не принимает параметр:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem settingsItem = menu.findItem(R.id.actionbar_menu_profile_actions); 
    if (changeImage) { 
     Glide.with(this).load(theURLOftheImage).error(R.drawable.ic_error_image).into(settingsItem); 
    } 
    return super.onPrepareOptionsMenu(menu); 
} 

ответ

6

Используя подход, предложенный в ответах на this question работал

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    MenuItem settingsItem = menu.findItem(R.id.actionbar_menu_profile_actions); 
    if (changeImage) { 
     Glide.with(this).load(theURLOfTheImage).asBitmap().into(new SimpleTarget<Bitmap>(100,100) { 
      @Override 
      public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { 
       settingsItem.setIcon(new BitmapDrawable(getResources(), resource)); 
      } 
     }); 
    } 
    return super.onPrepareOptionsMenu(menu); 
} 
Смежные вопросы