Android 如何从gridview中的url加载图像
我是android的初学者,在我需要将图片发送到gridview中的另一个Activity之后,我将图片的url保存在singleton中。 请有人能帮我。Android 如何从gridview中的url加载图像,android,gridview,singleton,Android,Gridview,Singleton,我是android的初学者,在我需要将图片发送到gridview中的另一个Activity之后,我将图片的url保存在singleton中。 请有人能帮我。 首先,您需要知道如何在活动之间发送数据。 参考: 接下来,在获得destinate活动的url后,需要显示它。 参考: 举个例子:首先从当前的活动通过意图将图像url发送到另一个活动。像- Intent intent = new Intent(currentActivity, nextActivity); input.putExtra("
- 首先,您需要知道如何在活动之间发送数据。 参考:
- 接下来,在获得destinate活动的url后,需要显示它。 参考:
举个例子:首先从当前的
活动
通过意图
将图像url发送到另一个活动
。像-
Intent intent = new Intent(currentActivity, nextActivity);
input.putExtra("urlKey", "urlValue");
startActivity(intent);
并从NextActivity接收您的图像url。像-
Intent intent = getIntent();
String imageUrl = intent.getStringExtra("urlKey");
并使用第三方库从web服务器/url加载图像进行查看。看一看。在GridView
的适配器上使用Picasso
。前
Picasso.with(context)
.load(imageUrl)
.resize(50, 50)
.centerCrop()
.into(yourImageView)
如果您使用像毕加索这样的第三方库,那么只需几行代码就可以实现您的目标
执行以下步骤:
在build.gradle文件的依赖项块中添加以下行
依赖项{compile'com.squareup.picasso:picasso:2.5.2'}
然后将图像加载到图像视图中:
语法:
比如说
- 对于gridview,创建一个适配器并加载带有位置的图像,请参考此适配器类
导入android.app.Activity;
导入android.content.Context;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ImageView;
导入android.widget.RatingBar;
导入android.widget.TextView
导入com.drapp.basedraperactivity;
进口com.drapp.R;
导入com.squareup.picasso.picasso
导入java.util.ArrayList
公共类GridViewAdapter扩展了RecyclerView.Adapter{
私人活动
Context context;
ArrayList<String> image = new ArrayList<String>();
ArrayList<String> name = new ArrayList<String>();
private static LayoutInflater inflater = null;
public GridViewAdapter(BaseDrawerActivity mainActivity, ArrayList<String> thumbnail, ArrayList<String> dish_name) {
this.activity = mainActivity;
this.context = mainActivity;
image = thumbnail;
name = dish_name;
}
public int getCount() {
//return textnew1.length;
int s = name.size();
return s;
}
public Object getItem(int position) {
return position;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.grid_item_layout, parent, false);
// set the view's size, margins, paddings and layout parameters
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.productnametv.setText(name.get(position));
if (image.get(position).equals("")) {
holder.productimg.setImageResource(R.drawable.heart);
holder.productimg.setVisibility(View.INVISIBLE);
} else {
Picasso.with(context).load(image.get(position)).into(holder.productimg);
}
}
public long getItemId(int position) {
return position;
}
@Override
public int getItemCount() {
return name.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView productnametv;
public ImageView productimg;
public RatingBar rating;
public ViewHolder(View itemView) {
super(itemView);
productnametv = (TextView) itemView.findViewById(R.id.grid_item_label);
productimg = (ImageView) itemView.findViewById(R.id.grid_item_image);
}
}
语境;
ArrayList image=新的ArrayList();
ArrayList name=新的ArrayList();
专用静态充气机=空;
公共GridViewAdapter(BaseDrawerActivity主活动、ArrayList缩略图、ArrayList盘_名称){
this.activity=main活动;
this.context=main活动;
图像=缩略图;
名称=盘子名称;
}
public int getCount(){
//返回textnew1.length;
int s=name.size();
返回s;
}
公共对象getItem(int位置){
返回位置;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.grid\u item\u layout,父项,false);
//设置视图的大小、边距、填充和布局参数
视窗支架vh=新视窗支架(v);
返回vh;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
holder.productnametv.setText(name.get(position));
if(image.get(position.equals)(“”){
holder.productimg.setImageResource(R.drawable.heart);
holder.productimg.setVisibility(视图不可见);
}否则{
毕加索.with(context).load(image.get(position)).into(holder.productimg);
}
}
公共长getItemId(int位置){
返回位置;
}
@凌驾
public int getItemCount(){
返回name.size();
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
公共图文电视;
公共图像视图产品;
公共评级栏评级;
公共视图持有者(视图项视图){
超级(项目视图);
productnametv=(TextView)itemView.findViewById(R.id.grid\u item\u标签);
productimg=(ImageView)itemView.findViewById(R.id.grid\u item\u image);
}
}
}
如果您不想使用第三方库,请尝试此选项
new DownloadImage(imamgeview).execute(userProfileUrl);
创建异步任务
public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
CircleImageView bmImage;
public DownloadImage(ImageView bmImage) {
this.bmImage = (CircleImageView) bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.d("Error", e.getStackTrace().toString());
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
public类下载映像任务{
圆形图像视图bmImage;
公共下载图像(ImageView bmImage){
this.bmImage=(CircleImageView)bmImage;
}
受保护位图doInBackground(字符串…URL){
字符串urldisplay=url[0];
位图mIcon11=null;
试一试{
InputStream in=newjava.net.URL(urldisplay.openStream();
mIcon11=BitmapFactory.decodeStream(in);
}捕获(例外e){
Log.d(“错误”,例如getStackTrace().toString());
}
返回mIcon11;
}
受保护的void onPostExecute(位图结果){
bmImage.setImageBitmap(结果);
}
}
我希望它能在您的情况下起作用使用intent.putextra(“KEY”、“URL”);创建一个模型类并使用Parcelable传递数据可能重复使用您的方法但图像未显示在gridview中
new DownloadImage(imamgeview).execute(userProfileUrl);
public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
CircleImageView bmImage;
public DownloadImage(ImageView bmImage) {
this.bmImage = (CircleImageView) bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.d("Error", e.getStackTrace().toString());
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}