Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从gridview中的url加载图像_Android_Gridview_Singleton - Fatal编程技术网

Android 如何从gridview中的url加载图像

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("

我是android的初学者,在我需要将图片发送到gridview中的另一个Activity之后,我将图片的url保存在singleton中。 请有人能帮我。

  • 首先,您需要知道如何在活动之间发送数据。 参考:
  • 接下来,在获得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);
        }
    }