我实现了另一个活动,当点击卡时需要打开但我得到错误:(56,48)错误:不兼容的类型:匿名回调JSONResponse无法转换为Context即使我转换为JSONResponse然后还有另一个错误。问题在于JSONResponse,但我无法解决它。
DataAdapter.java
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private ArrayList<AndroidVersion> android;
Context ctx;
public DataAdapter(ArrayList<AndroidVersion> android, Context ctx)
{
this.android = android;
this.ctx = ctx;
}
@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,ctx,android);
}
@Override
public void onBindViewHolder(DataAdapter.ViewHolder viewHolder, int i) {
viewHolder.tv_name.setText(android.get(i).getName());
viewHolder.tv_version.setText(android.get(i).getVer());
viewHolder.tv_api_level.setText(android.get(i).getApi());
}
@Override
public int getItemCount() {
return android.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
private TextView tv_name,tv_version,tv_api_level;
ArrayList<AndroidVersion> android = new ArrayList<AndroidVersion>();
Context ctx;
public ViewHolder(View view, Context ctx, ArrayList<AndroidVersion> android)
{
super(view);
this.android = android;
this.ctx = ctx;
view.setOnClickListener(this);
tv_name = (TextView)view.findViewById(R.id.tv_name);
tv_version = (TextView)view.findViewById(R.id.tv_version);
tv_api_level = (TextView)view.findViewById(R.id.tv_api_level);
}
@Override
public void onClick(View v) {
int i = getAdapterPosition();
AndroidVersion android = this.android.get(i);
Intent intent = new Intent(this.ctx, ContactDetails.class);
intent.putExtra("name_id",android.getName());
intent.putExtra("version_id",android.getVer());
intent.putExtra("api_level_id",android.getApi());
((Context) this.ctx).startActivity(intent);}
}
}
JSONResponse.java
public class JSONResponse {
private AndroidVersion[] android;
public AndroidVersion[] getAndroid() {
return android;}
}
答案 0 :(得分:0)
第一期, documentation
到此:
adapter = new DataAdapter(data,MainActivity.this);
给出错误是因为:如果你把它放在一个回调函数中,你就是在引用onResponse作用域,你不能使用它,因为它是在范围外的,因此你必须使用MainActivity.this或getApplicationContext();