Encore une fois, j'ai essayé de trouver des réponses partout sur le net. Cependant, je n'arrive pas à trouver un correspondant à mon problème. Fondamentalement, j'ai une liste d'émoticônes d'une API que j'utilise et j'essaye d'obtenir ces images à afficher dans un TextView qui ne fonctionne tout simplement pas. Les images apparaissent sous la forme de carrés bleus dans ma vue de recyclage jusqu'à ce que je les défile vers le haut puis qu'elles apparaissent. Voici mon code et je ne suis pas sûr que ce que je fais est correct. Je ne me souviens pas pourquoi j'ai fait ce que j'ai fait car c'est un vieux code et j'essaie de le refactoriser. Quelqu'un peut-il aider?Picaso avec ImageGetter dans TextView de JSON
Voici le code:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Posts posts = mPost.getItem(position);
emoticons = mEmoticon.getItems();
String message = null;
String emoMessage = null;
if (posts.getPost() != null) {
if (posts.getPost().getMessage() != null) {
message = posts.getPost().getMessage();
emoMessage = message;
if (emoticons != null) {
for (Emoticons emoticon : this.emoticons) {
if (message.contains(emoticon.getEmoticon().getCode())) {
emoMessage = message.replaceAll(Constants.EMO_REGEX, emoticon.getEmoticon().getUrl());
}
}
}
holder.mPostTextView.setText(Html.fromHtml(emoMessage, new Html.ImageGetter() {
@Override
public Drawable getDrawable(final String source) {
Target loadTarget;
loadTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
URL url = new URL(source);
InputStream is = url.openStream();
Bitmap b = BitmapFactory.decodeStream(is);
mDrawable = new BitmapDrawable(Resources.getSystem(), b);
mDrawable.setBounds(0, 0, mDrawable.getIntrinsicWidth() + 25, mDrawable.getIntrinsicHeight() + 25);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
Picasso.with(mContext).load(source).into(loadTarget);
return mDrawable;
}
}, null);
}
Mais je fais tout cela dans mon setText() comment pourrais-je changer cela? – BilalMH
Désolé - j'ai eu un autre regard et je ne pense pas que mon idée fonctionnera. Cela peut aider? http://stackoverflow.com/questions/25194549/using-picasso-with-image-getter – danwilkie