【问题标题】:Image is not loading in ImageView - Android图像未在 ImageView 中加载 - Android
【发布时间】:2020-06-03 13:50:52
【问题描述】:

我想在全屏视图的下一个活动中加载单击的图像。我不知道我做错了什么。该应用程序运行良好,但图像未在下一个屏幕上加载。是 android 开发的新手,我想我应该从做一个项目开始学习。我不明白我的编码有什么问题。

public class CategoriesAdapter extends RecyclerView.Adapter<CategoriesAdapter.ImageViewHolder> {
   private Context mCtx;
   private List<Category> imageslist;

    public CategoriesAdapter(Context mCtx, List<Category> imageslist) {
        this.mCtx = mCtx;
        this.imageslist = imageslist;
    }


    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(mCtx).inflate(R.layout.recyclerview_images,parent,false);
   return new ImageViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ImageViewHolder holder, final int position) {
        final Category images=imageslist.get(position);
        Glide.with(mCtx).load(images.url).into(holder.imageView);
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(mCtx, LoadWall.class);
                intent.putExtra("url", (Parcelable) imageslist.get(position));
                mCtx.startActivity(intent);
            }
        });

    }

    @Override
    public int getItemCount() {
        return imageslist.size();
    }

    class ImageViewHolder extends RecyclerView.ViewHolder{
       ImageView imageView;

        public ImageViewHolder(@NonNull View itemView) {

            super(itemView);
            imageView=itemView.findViewById(R.id.image_view);

        }
    }

}

这是我要加载图像的活动。但它没有加载。请帮忙

public class LoadWall extends AppCompatActivity {
ImageView imageView;
int myImage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_load_wall);
        imageView=findViewById(R.id.load_image);
        get();

    }
    private void get(){
        if(getIntent().hasExtra("url")){
            String image=getIntent().getStringExtra("url");
            set(image);
        }
        else{
            Toast.makeText(this,"No Data",Toast.LENGTH_SHORT).show();
        }
    }
private void set(String image){
    Glide.with(this).load(image).into(imageView);
}
}

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow!问题的标题必须是描述性的;考虑将其更改为“图像未在 Android ImageView 中加载”。

标签: java android android-intent imageview


【解决方案1】:

这里您只需要将 URL 作为字符串传递。 Parcelable 不是必需的。

intent.putExtra("url", imageslist.get(position).getUrl());

【讨论】:

    【解决方案2】:

    选项 1)

    在您的下一个活动中,您正在寻找字符串。

    String image=getIntent().getStringExtra("url");
    

    在 onClick() 的第一个活动中,将您的代码更改为此。

    Intent intent=new Intent(mCtx, LoadWall.class);
    intent.putExtra("url", imageslist.get(position)); 
    intent.startActivity(intent);
    

    我看到 imageslist.get(position) 将返回 Category 所以你需要添加你的 url 参数。像这样的 imageslist.get(position).getUrl();

    选项 2)

    如果您想获取 Category 对象,那么在下一个活动中更改为 this

    Category category = getIntent().getParcelableExtra("url");
    

    【讨论】:

      【解决方案3】:

      您的imagesList 包含Category 类型的数据,并且您将此列表中的条目发送到下一个活动。但是,第二个活动期望收到String。它会检查它是否有额外的(它有 - 但不是你需要的),然后尝试将该值作为String 检索,这将导致null 字符串。拥有null,Glide 不会加载任何东西。

      换句话说,您在使用的数据上犯了一个小错误。当您加载数据时,您可以使用url 字段正确地进行操作

      final Category images=imageslist.get(position);
      Glide.with(mCtx).load(**images.url**).into(holder.imageView);
      

      但是当你将它传递给下一个活动时,你会发送整个对象

      intent.putExtra("url", **(Parcelable) imageslist.get(position)**);
      

      像第一种情况一样使用url 字段将使您的应用正常运行。

      【讨论】:

        【解决方案4】:

        开始你的Activity

         Intent intent=new Intent(mCtx, LoadWall.class);
         intent.putExtra("url", images.url);
         mCtx.startActivity(intent);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-06-18
          • 2014-01-29
          • 2020-08-27
          • 1970-01-01
          • 2017-11-13
          • 1970-01-01
          相关资源
          最近更新 更多