java Picasso视图无法在DataAdapter内转换为上下文
我创建了我的应用程序,它正在连接到服务器上的JSON文件,以获取用户信息,然后将其设置到卡片行。这一切都很好,但我无法让毕加索使用它,除非我把它放在我的public ViewHolder(视图)方法中,但我无法访问阵列。有办法解决这个问题吗?我发现了错误
Error:(55, 22) error: incompatible types: DataAdapter.ViewHolder cannot be converted to Context
代码发布在下面。谢谢
package com.example.curtisboylan.myapplication;
/**
* Created by curtisboylan on 02/02/2017.
*/
import 安卓.content.Intent;
import 安卓.support.v7.widget.RecyclerView;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.view.ViewGroup;
import 安卓.widget.ImageView;
import 安卓.widget.TextView;
import 安卓.widget.Toast;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<String> username;
private ArrayList<String> userid;
private ArrayList<String> location;
private ArrayList<String> reviewscore;
private ArrayList<String> price;
private ArrayList<String> url;
public DataAdapter(ArrayList<String> username, ArrayList<String> userid, ArrayList<String> location, ArrayList<String> reviewscore, ArrayList<String> price, ArrayList<String> url) {
this.username = username;
this.userid = userid;
this.location = location;
this.reviewscore = reviewscore;
this.price = price;
this.url = url;
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_row, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {
final String item = userid.get(i);
final String usernamepass = username.get(i);
viewHolder.usernametext.setText(username.get(i));
viewHolder.reviewscoretext.setText(reviewscore.get(i));
viewHolder.pricetext.setText("€" + price.get(i) +"/hr");
viewHolder.locationtext.setText(location.get(i));
//"https://cms-assets.tutsplus.com/uploads/users/21/posts/19431/featured_image/CodeFeature.jpg";
Picasso.with(viewHolder)
.load(url.get(i))
.into(viewHolder.profileimg);
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), "User ID: " + item, Toast.LENGTH_SHORT).show();
Intent intent=new Intent(view.getContext(),TechnicianProfile.class);
intent.putExtra("username", usernamepass);
intent.putExtra("userid", item);
view.getContext().startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return username.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView usernametext;
private TextView pricetext;
private TextView locationtext;
private TextView reviewscoretext;
private ImageView profileimg;
public ViewHolder(View view) {
super(view);
usernametext = (TextView)view.findViewById(R.id.textView4);
pricetext = (TextView)view.findViewById(R.id.price);
locationtext = (TextView)view.findViewById(R.id.location);
reviewscoretext = (TextView)view.findViewById(R.id.reviewscore);
profileimg = (ImageView)view.findViewById(R.id.userpic);
}
}
}
# 1 楼答案
你需要给^{} 给^{} 一个。换成
但这很容易出错,为了避免泄漏,最好给出一个application context