【问题标题】:Picasso - can't find "context"毕加索 - 找不到“上下文”
【发布时间】:2018-04-26 23:57:53
【问题描述】:

首先,我是一个初学者,这对你来说可能是一个愚蠢的问题。 我需要将上下文传递给以下代码,以便在 recyclerview 中加载图像。 尝试了几个选项,但其中任何一个都不成功。我的问题是如何找到要在以下代码中传递的上下文。

Picasso.with(context here).load("http://i.imgur.com/DvpvklR.png").into(thumbnail);

这是导致问题的完整代码(我正在尝试将图像传递给 recyclerview)

public class WishListAdapter extends RecyclerView.Adapter<WishListAdapter.DerpHolder> {

    private List<WishListItem> listData;
    private LayoutInflater inflater;

    public WishListAdapter(List<WishListItem> listData, Context c) {
        inflater = LayoutInflater.from(c);
        this.listData = listData;
    }

    @Override
    public WishListAdapter.DerpHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.wish_list_item, parent, false);
        return new DerpHolder(view);
    }

    @Override
    public void onBindViewHolder(DerpHolder holder, int position) {

    }

    public void setListData(ArrayList<WishListItem> exerciseList) {
        this.listData.clear();
        this.listData.addAll(exerciseList);
    }

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

    class DerpHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        ImageView thumbnail;
        TextView title;
        TextView subTitle;
        View container;


        public DerpHolder(View itemView) {
            super(itemView);
            thumbnail = itemView.findViewById(R.id.im_item_icon);

            //subTitle = itemView.findViewById(R.id.lbl_item_sub_title);

            //title = itemView.findViewById(R.id.lbl_item_text);

            container = itemView.findViewById(R.id.cont_item_root);
            container.setOnClickListener(this);
            Picasso.with(context ).load("http://i.imgur.com/DvpvklR.png").into(thumbnail);
        }

        @Override
        public void onClick(View v) {
            Log.d("janitha", "item clicked");

        }

我也读过以下内容:-Picasso and context

期待别人的帮助。

【问题讨论】:

    标签: java android android-recyclerview picasso android-context


    【解决方案1】:

    请像下面这样声明上下文变量并使用它:

    public class WishListAdapter extends RecyclerView.Adapter<WishListAdapter.DerpHolder> {
    
        private List<WishListItem> listData;
        private LayoutInflater inflater;
        private Context context
    
        public WishListAdapter(List<WishListItem> listData, Context c) {
            inflater = LayoutInflater.from(c);
            this.listData = listData;
            this.context = c;
        }
    
        @Override
        public WishListAdapter.DerpHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = inflater.inflate(R.layout.wish_list_item, parent, false);
            return new DerpHolder(view);
        }
    
        @Override
        public void onBindViewHolder(DerpHolder holder, int position) {
    
        }
    
        public void setListData(ArrayList<WishListItem> exerciseList) {
            this.listData.clear();
            this.listData.addAll(exerciseList);
        }
    
        @Override
        public int getItemCount() {
            return listData.size();
        }
    
        class DerpHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    
            ImageView thumbnail;
            TextView title;
            TextView subTitle;
            View container;
    
    
            public DerpHolder(View itemView) {
                super(itemView);
                thumbnail = itemView.findViewById(R.id.im_item_icon);
    
                //subTitle = itemView.findViewById(R.id.lbl_item_sub_title);
    
                //title = itemView.findViewById(R.id.lbl_item_text);
    
                container = itemView.findViewById(R.id.cont_item_root);
                container.setOnClickListener(this);
                Picasso.with(context ).load("http://i.imgur.com/DvpvklR.png").into(thumbnail);
            }
    
            @Override
            public void onClick(View v) {
                Log.d("janitha", "item clicked");
    
            }
    

    【讨论】:

      【解决方案2】:

      修改你的代码如下:

      private List<WishListItem> listData;
      private LayoutInflater inflater;
      private Context mContext;
      
      public WishListAdapter(List<WishListItem> listData, Context c) {
          inflater = LayoutInflater.from(c);
          this.listData = listData;
          this.mContext = c;
      }
      

      然后将mContext毕加索一起使用:

      Picasso.with(mContext).load("http://i.imgur.com/DvpvklR.png").into(thumbnail);
      

      【讨论】:

        【解决方案3】:

        试试,

        private Context context;
        

        在你的构造函数中,

        this.context = c;
        

        现在您可以使用“上下文”作为参数。

        【讨论】:

          【解决方案4】:

          您尚未从构造函数中保存上下文。这样做:

          public class WishListAdapter extends 
               RecyclerView.Adapter<WishListAdapter.DerpHolder> {
          
              private List<WishListItem> listData;
              private LayoutInflater inflater;
              Context context;
          
              public WishListAdapter(List<WishListItem> listData, Context c) {
                  inflater = LayoutInflater.from(c);
                  this.listData = listData;
                  this.context = c;
              }
          
              @Override
              public WishListAdapter.DerpHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                  View view = inflater.inflate(R.layout.wish_list_item, parent, false);
                  return new DerpHolder(view);
              }
          
              @Override
              public void onBindViewHolder(DerpHolder holder, int position) {
          
              }
          
              public void setListData(ArrayList<WishListItem> exerciseList) {
                  this.listData.clear();
                  this.listData.addAll(exerciseList);
              }
          
              @Override
              public int getItemCount() {
                  return listData.size();
              }
          
              class DerpHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
          
                  ImageView thumbnail;
                  TextView title;
                  TextView subTitle;
                  View container;
          
          
                  public DerpHolder(View itemView) {
                      super(itemView);
                      thumbnail = itemView.findViewById(R.id.im_item_icon);
          
                      //subTitle = itemView.findViewById(R.id.lbl_item_sub_title);
          
                      //title = itemView.findViewById(R.id.lbl_item_text);
          
                      container = itemView.findViewById(R.id.cont_item_root);
                      container.setOnClickListener(this);
                      Picasso.with(context ).load("http://i.imgur.com/DvpvklR.png").into(thumbnail);
                  }
          
                  @Override
                  public void onClick(View v) {
                      Log.d("janitha", "item clicked");
          
                  }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-04
            • 2014-08-29
            • 1970-01-01
            • 1970-01-01
            • 2017-05-09
            • 2016-02-09
            相关资源
            最近更新 更多