在 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);
}
}
}
尝试从 activity
或 fragment
获取上下文
Context context;
public UserAdapter(ArrayList<User> users, Context context) {
this.users = users;
this.context = context;
}
这样称呼你适配器,
UserAdapter adapter = new UserAdapter(usermodel, context);
此处上下文将 activity context
或 fragment context
或 getApllicationContext()
现在你可以调用 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);
}
}
我想使用 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);
}
}
}
尝试从 activity
或 fragment
Context context;
public UserAdapter(ArrayList<User> users, Context context) {
this.users = users;
this.context = context;
}
这样称呼你适配器,
UserAdapter adapter = new UserAdapter(usermodel, context);
此处上下文将 activity context
或 fragment context
或 getApllicationContext()
现在你可以调用 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);
}
}