我正在构建一个聊天应用程序,并尝试将图像附加到 EditText,通过使用 Picasso 从 URL 获取图像,并使用附加和 ImageGetter 将图像附加到 EditText。但是,我在下面实现的内容不起作用,因为使用应用程序时附加消息不会显示任何内容(但该消息确实显示在数据库中)。
我已经在不使用 Picasso 的情况下进行了测试,因为只需将 ImageGetter 与应用程序中的图像资源一起使用即可正常工作,只是它不是根据需要来自 URL。
配置 ImageGetter 和/或附加方法以便此功能适用于 Picasso 的正确方法是什么?或者有更简单的方法吗?
追加方法:
public void appendToMessageHistory(final String username,
final String message) {
if (username != null && message != null) {
Picasso.with(getBaseContext())
.load("http://localhost:3000/uploads/campaign/image/2/2.jpg")
.into(new Target() {
@Override
public void onPrepareLoad(Drawable arg0) {
}
@Override
public void onBitmapLoaded(Bitmap bitmap,
LoadedFrom arg1) {
Drawable drawImage = new BitmapDrawable(
getBaseContext().getResources(), bitmap);
drawImage.setBounds(0, 0,
drawImage.getIntrinsicHeight(),
drawImage.getIntrinsicWidth());
messageHistoryText.append(Html.fromHtml("<b>"
+ username + ":" + "</b>" + "<br>"));
messageHistoryText.append(Html.fromHtml(message
+ "<hr>" + "<br>")
+ System.getProperty("line.separator") + "");
messageHistoryText.append(Html
.fromHtml("<img src = '" + drawImage
+ "'/>",
imageGetter,
null));
}
@Override
public void onBitmapFailed(Drawable arg0) {
}
});
}
}
图像获取器:
ImageGetter imageGetter = new ImageGetter() {
Drawable imageUsed=null;
@Override
public Drawable getDrawable(String source) {
Picasso.with(getBaseContext())
.load("http://localhost:3000/uploads/campaign/image/2/2.jpg")
.into(new Target() {
@Override
public void onPrepareLoad(Drawable arg0) {
}
@Override
public void onBitmapLoaded(Bitmap bitmap,
LoadedFrom arg1) {
Drawable drawImage = new BitmapDrawable(
getBaseContext().getResources(), bitmap);
drawImage.setBounds(0, 0,
drawImage.getIntrinsicHeight(),
drawImage.getIntrinsicWidth());
imageUsed=drawImage;
}
@Override
public void onBitmapFailed(Drawable arg0) {
}
});
return imageUsed;
}
};