在 Recyclerview 中使用 Picasso 获取图像时出错

Error in using Picasso to fetch image in Recyclerview

我想使用 Picasso 从 json url 中获取图像,但不知道如何在 RecyclerView 中使用。 Picasso.with(上下文).load(String.valueOf(users.get(位置))).into(holder.avatar);

我在使用如何定义上下文的方法时遇到错误???

UserAdapter.java

public class UserAdapter extends 
          RecyclerView.Adapter<UserAdapter.UserViewHolder> {

    ArrayList<User> users = new ArrayList<>();

    public UserAdapter(ArrayList<User> users) {
        this.users = users;
    }

    @Override
    public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.items,parent,false);

        return new UserViewHolder(view);
    }

    @Override
    public void onBindViewHolder(UserViewHolder holder, int position) {
        holder.login.setText(users.get(position).getUser_login());
        holder.type.setText(users.get(position).getType());
        Picasso.with(context).load(String.valueOf(users.get(position))).into(holder.avatar);
    }

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



    public class UserViewHolder extends RecyclerView.ViewHolder {

        TextView login;
        TextView type;
        ImageView avatar;

        public UserViewHolder(View itemView) {
            super(itemView);
            login = (TextView)itemView.findViewById(R.id.login);
            type = (TextView)itemView.findViewById(R.id.type);
            avatar = (ImageView)itemView.findViewById(R.id.avatar);
        }
    }
  }

尝试从 activityfragment

获取上下文
Context context; 
  public UserAdapter(ArrayList<User> users, Context context) {
        this.users = users;
        this.context = context;
   }

这样称呼你适配器,

UserAdapter adapter = new UserAdapter(usermodel, context);

此处上下文将 activity contextfragment contextgetApllicationContext()

现在你可以调用 Picasso 从服务器获取图像 Picasso.with(context).load(String.valueOf(users.get(position))).into(holder.avatar);

使用这个

private Context context;
private ArrayList<User> users = new ArrayList<>();
private LayoutInflater layoutInflater;
//constructor

public UserAdapter(ArrayList<User> users, Context context) {
    this.users = users;
    this.context = context;
    this.layoutInflater=layoutInfalter.from(context);
}

   @Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view = layoutInfalter.inflate(R.layout.items,parent,false);

    return new UserViewHolder(view);
}

@Override
public void onBindViewHolder(UserViewHolder holder, int position) {
    holder.login.setText(users.get(position).getUser_login());
    holder.type.setText(users.get(position).getType());
    Picasso.with(context).
    load(String.valueOf(users.get(position)))
    .into(holder.avatar);

}

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



public class UserViewHolder extends RecyclerView.ViewHolder {

    TextView login;
    TextView type;
    ImageView avatar;

    public UserViewHolder(View itemView) {
        super(itemView);
        login = (TextView)itemView.findViewById(R.id.login);
        type = (TextView)itemView.findViewById(R.id.type);
        avatar = (ImageView)itemView.findViewById(R.id.avatar);
    }
}