如何在 url 的 imageView 中显示图像
how to show image in imageView from url
我有一个包含一些图像的 gridview,当我单击其中一个时,它出现了一些文本而不是图像本身,因为我希望图像从 url 加载。我正在使用 picasso 加载图像,因为我发现这是最简单的方法,请告知我做错了什么
smiles_items_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="@+id/smile_image_view"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_gravity="center"/>
</LinearLayout>
BottomSheetDialog_Smiles.java
@Override
public View getView(final int position, final View convertView,
ViewGroup parent) {
final Holder holder = new Holder();
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.smiles_items_layout, null);
holder.img = (ImageView) grid.findViewById(R.id.smile_image_view);
holder.img.setImageResource(mThumbIds[position]);
gridView2.setOnItemClickListener(new
AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int i, long l) {
JSONDictionary imageChat = new JSONDictionary();
Picasso.with(context)
.load("https://wallpapercave.com/wp/JUwBXRw.jpg")
.resize(50,50).into(holder.img);
imageChat.put("message", holder.img);
Communicator.getInstance().emit("new chat message",
imageChat);
}
});
return grid;
}
}
这是显示的结果
我有一个包含一些图像的 gridview,当我点击其中一个时,它出现了一些文本而不是图像本身,因为我希望图像从 url.
=> 您看到对象地址的原因是您在聊天消息中传递了 ImageView。
imageChat.put("message", holder.img);
相反,您应该只传递一个图片地址,例如:
imageChat.put("image_to_load", "https://wallpapercave.com/wp/JUwBXRw.jpg");
在接收方,使用相同的代码编写代码来加载图像:
Picasso.with(context)
.load("https://wallpapercave.com/wp/JUwBXRw.jpg")
.resize(50,50).into(holder.img);
因为 Picasso 可以帮助您从给定的 URL 异步加载图像,所以您应该在实际需要时进行调用。在您的情况下,图像应该在接收端加载。
在我的应用程序中,我做了类似的事情:
Glide.with(getActivity()).load(url)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.centerCrop().into(imageview);
我有一个包含一些图像的 gridview,当我单击其中一个时,它出现了一些文本而不是图像本身,因为我希望图像从 url 加载。我正在使用 picasso 加载图像,因为我发现这是最简单的方法,请告知我做错了什么
smiles_items_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="@+id/smile_image_view"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_gravity="center"/>
</LinearLayout>
BottomSheetDialog_Smiles.java
@Override
public View getView(final int position, final View convertView,
ViewGroup parent) {
final Holder holder = new Holder();
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.smiles_items_layout, null);
holder.img = (ImageView) grid.findViewById(R.id.smile_image_view);
holder.img.setImageResource(mThumbIds[position]);
gridView2.setOnItemClickListener(new
AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int i, long l) {
JSONDictionary imageChat = new JSONDictionary();
Picasso.with(context)
.load("https://wallpapercave.com/wp/JUwBXRw.jpg")
.resize(50,50).into(holder.img);
imageChat.put("message", holder.img);
Communicator.getInstance().emit("new chat message",
imageChat);
}
});
return grid;
}
}
这是显示的结果
我有一个包含一些图像的 gridview,当我点击其中一个时,它出现了一些文本而不是图像本身,因为我希望图像从 url.
=> 您看到对象地址的原因是您在聊天消息中传递了 ImageView。
imageChat.put("message", holder.img);
相反,您应该只传递一个图片地址,例如:
imageChat.put("image_to_load", "https://wallpapercave.com/wp/JUwBXRw.jpg");
在接收方,使用相同的代码编写代码来加载图像:
Picasso.with(context)
.load("https://wallpapercave.com/wp/JUwBXRw.jpg")
.resize(50,50).into(holder.img);
因为 Picasso 可以帮助您从给定的 URL 异步加载图像,所以您应该在实际需要时进行调用。在您的情况下,图像应该在接收端加载。
在我的应用程序中,我做了类似的事情:
Glide.with(getActivity()).load(url)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.centerCrop().into(imageview);