2017-06-02 85 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();