2017-06-02 102 views
-1

我实现了另一个需要打开时点击卡,但我得到错误:(56,48)错误:不兼容的类型:匿名回调JSONResponse无法转换为上下文即使我转换为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

回答

0

第一个问题, Change the red data

这样:

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

是给错误的原因是:如果你把这个回调里面,你是指的在onResponse范围,你不能用这个,因为是外范围,因此你不得不使用MainActivity.this或getApplicationContext();