Recycler视图打开新活动

时间:2017-06-02 18:14:48

标签: java android json retrofit2

我实现了另一个活动,当点击卡时需要打开但我得到错误:(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;}
}

mainActivity when i write this getting error

main

1 个答案:

答案 0 :(得分:0)

第一期, documentation

到此:

adapter = new DataAdapter(data,MainActivity.this);

给出错误是因为:如果你把它放在一个回调函数中,你就是在引用onResponse作用域,你不能使用它,因为它是在范围外的,因此你必须使用MainActivity.this或getApplicationContext();