J'utilise MaterialDrawer lib pour générer un tiroir de navigation sous Android, j'essaie également d'obtenir une image d'une source externe et de la définir comme une icône dans l'objet DrawerItem et pour cela j'utilise Glide v4 lib pour télécharger l'image à partir de la source externe, mais je ne sais pas comment il mettrait à jour les espaces réservés d'icône dans chaque DrawerItem que j'ai dans le tiroir. Voici ce que je l'ai fait jusqu'à présent:Icône de chargement de l'URL dans la bibliothèque Android de MaterialDrawer utilisant Glide
@Override
protected void onCreate(Bundle savedInstanceState)
{
...
ArrayList<IDrawerItem> drawerItems = new ArrayList<IDrawerItem>();
String icon = "http://myiconwebsite.com/myicon.png";
//create Drawer Item obj
PrimaryDrawerItem primary = new PrimaryDrawerItem();
//set title
primary.withName("Test");
primary.withIdentifier(1);
primary.withSelectable(false);
//define image view for Glide
//I'm defining this image view so I can load the downloaded image into it so I can get the loaded image as Drawable
final ImageView iv = new ImageView(this);
//load the image in the view
Target rb = Glide.with(this).asDrawable().load(icon).into(iv);
//get the drawable object from the image view
Drawable dr = iv.getDrawable();
//set the icon of this drawer
primary.withIcon(dr);
//add it to the list of drawers
drawerItems.add(primary);
//create our drawer
DrawerBuilder result = new DrawerBuilder();
result.withActivity(this);
result.withDrawerItems (drawerItems);
...
result.build();
...
}
Notez que je suis en train de télécharger l'image en utilisant Glide
et charger l'image dans un ImageView
puis extraire cette image comme un objet en utilisant Drawable
iv.getDrawable()
. Je le fais de cette façon parce que j'ai besoin que l'objet soit Drawable
car c'est ce que la méthode accepte pour afficher cette icône dans le tiroir. Maintenant, le problème est quand j'appelle iv.getDrawable()
il renvoie null
et ne fonctionne pas comme prévu. Comment y parvenir?
aussi je pourrais faire quelque chose de mal ici? comme je l'ai vu dans les documentations, ils ont mentionné des bibliothèques comme Glide
et Picasso
peuvent être supportés mais ils n'ont pas ajouté assez d'exemples de la façon de le faire. Gardez à l'esprit que je suis encore nouveau sur Java et Glide, donc je ne suis pas sûr que ce soit la façon de le faire.
Toute aide serait appréciée :) Merci ..
Merci, je l'ai finalement compris cela, bien qu'il serait agréable d'avoir que construit dans tous les objets drawerItem par défaut. Je n'aimais pas créer de nouvelles classes pour étendre la base DrawerItem afin de prendre en charge cette fonctionnalité pour chaque type de DrawerItem. Peut-être que je suis juste paresseux. mais je tiens à le garder propre, j'ai donc préchargé toutes les icônes en utilisant une activité d'écran de démarrage et stocké leurs drawables dans un Hashmap statique. Une fois que le processus est terminé, il m'amène à l'activité principale, maintenant Dans l'activité principale qui contient le tiroir tout ce que j'ai fait j'ai mis en correspondance ces drawables cachés à mon drawerItems et fait. – SolidSnake