Android 使用毕加索在Recyclerview中获取图像时出错

Android 使用毕加索在Recyclerview中获取图像时出错,android,android-recyclerview,picasso,Android,Android Recyclerview,Picasso,我想使用毕加索从json url获取图像,但不知道如何在RecyclerView中使用。 毕加索.withcontext.loadString.valueOfusers.getposition.intoholder.avatar 我在如何定义上下文的方法中出错了 UserAdapter.java 尝试从活动或片段获取上下文 这里的上下文将是活动上下文、片段上下文或GetApplicationContext 现在你可以调用毕加索从服务器Picasso.withcontext.loadString.

我想使用毕加索从json url获取图像,但不知道如何在RecyclerView中使用。 毕加索.withcontext.loadString.valueOfusers.getposition.intoholder.avatar

我在如何定义上下文的方法中出错了

UserAdapter.java

尝试从活动或片段获取上下文

这里的上下文将是活动上下文、片段上下文或GetApplicationContext

现在你可以调用毕加索从服务器Picasso.withcontext.loadString.valueOfusers.getposition.intoholder.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);
    }
}

您有两个选项,或者从acctivity或fragment获取上下文并传递给适配器,或者使用布局上下文1。首先,您需要从活动传递上下文。2.将Picasso.withcontext.loadString.valueOfusers.getposition.intoholder.avatar;收件人:Picasso.withcontext.loadusers.getposition.getAvatarUrl.intoholder.avatar;您的问题听起来应该像是如何将上下文输入到RecyclerView适配器中,而不是您所问的。@VladMatvienko是的,我如何在毕加索中定义上下文??只需使用搜索,您将在大约20秒内找到答案。还需要从picasso.withcontext.loadString.valueOfusers.getposition.intoholder.avatar中进行更改;收件人:Picasso.withcontext.loadusers.getposition.getAvatarUrl.intoholder.avatar;因为我不知道他使用的是什么数据类型,所以我只添加了他使用的代码。如果他使用的是string,那么他不需要string.ValueOfI,我只需要说他的模型是用户类型。我说的是为了改变这一点。请检查它ArrayList users=new ArrayList;和holder.login.setTextusers.getposition.getUser\u login;holder.type.setTextusers.getposition.getType;毕加索.withcontext.loadString.valueOfusers.getposition.intoholder.avatar;
Context context; 
  public UserAdapter(ArrayList<User> users, Context context) {
        this.users = users;
        this.context = context;
   }
UserAdapter adapter = new UserAdapter(usermodel, context);
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);
    }
}