2017-10-13 60 views
0

我正在尝试添加一个ImageView库,它显示点击特色RecyclerView(Github的回收站视图库)图像。图像显示没有任何问题,但是当我试图单击它给下面的错误。我也提到了一些在计算器问题类似的问题在图像上但没能解决我的问题:如何解决Android中的java.lang.ClassCastException?

java.lang.ClassCastException: android.support.v7.widget.TintContextWrapper cannot be cast to android.app.Activity 
    at com.mostafaaryan.transitionalimageview.TransitionalImageView$1.onClick(TransitionalImageView.java:82) 
    at android.view.View.performClick(View.java:4438) 
    at android.view.View$PerformClick.run(View.java:18422) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5001) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
    at dalvik.system.NativeStart.main(Native Method) 

我绑定观点持有者代码:

public class CustomRecyclerViewAdapter extends FeatureRecyclerViewAdapter<CustomRecyclerViewAdapter.CustomRecyclerViewHolder> { 

private List<String> dataList; 
private Context context; 
private int[] images = new int[5]; 

public CustomRecyclerViewAdapter(Context context, List<String> list) { 
    this.dataList = list; 
    this.context = context; 

    images[0] = R.drawable.image_one; 
    images[1] = R.drawable.image_three; 
    images[2] = R.drawable.image_two; 
    images[3] = R.drawable.image_four; 
    images[4] = R.drawable.image_five; 

} 

@Override 
public CustomRecyclerViewHolder onCreateFeaturedViewHolder(ViewGroup parent, int viewType) { 
    return new CustomRecyclerViewHolder(
      LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.timeline_holder, parent, false)); 
} 

@Override 
public void onBindFeaturedViewHolder(CustomRecyclerViewHolder holder, int position) { 
    /* Glide.with(context) 
      .load(images[position % 4]).into(holder.ivBackground);*/ 
    TransitionalImage transitionalImage = new TransitionalImage.Builder() 
      .duration(500) 
      .backgroundColor(ContextCompat.getColor(holder.ivBackground.getContext(), R.color.cardview_light_background)) 
      .image(images[position % 4]) 
      .create(); 
    holder.ivBackground.setTransitionalImage(transitionalImage); 

    // holder.tvHeading.setText(dataList.get(position)); 
} 

@Override 
public int getFeaturedItemsCount() { 
    return dataList.size(); 
} 

@Override 
public void onSmallItemResize(CustomRecyclerViewHolder holder, int position, float offset) { 
    // holder.tvHeading.setAlpha(offset/100f); 
} 

@Override 
public void onBigItemResize(CustomRecyclerViewHolder holder, int position, float offset) { 
    // holder.tvHeading.setAlpha(offset/100f); 
} 

public static class CustomRecyclerViewHolder extends RecyclerView.ViewHolder { 

    TransitionalImageView ivBackground; 
    TextView tvHeading; 

    public CustomRecyclerViewHolder(View itemView) { 
     super(itemView); 

     ivBackground = (TransitionalImageView) itemView.findViewById(R.id.iv_background); 
     // tvHeading = (TextView) itemView.findViewById(R.id.tv_heading); 
    } 
} 

}

回答

0

您的问题是

java.lang.ClassCastException: android.support.v7.widget.TintContextWrapper cannot be cast to android.app.Activity` 

因此,您可以将其更改为Context

试试这个。

private Context context; 

public YouAdapter(Context context){ 
    this.context = context; 
} 
@Override 
public void onBindViewHolder(CustomRecyclerViewHolder holder, int position) { 
/* Glide.with(context) 
     .load(images[position % 4]).into(holder.ivBackground);*/ 
    TransitionalImage transitionalImage = new TransitionalImage.Builder() 
      .duration(500) 
      .backgroundColor(ContextCompat.getColor(context, R.color.cardview_light_background)) 
      .image(images[position % 4]) 
      .create(); 
    holder.ivBackground.setTransitionalImage(transitionalImage); 
    //ivBackground is the imageView 
} 

编辑

context.getApplicationContext(); 
+0

爵士第一我曾尝试过,然后通过引用一些stackoverflow问题将上下文更改为当前表单 –

+0

并且您可以尝试@creonilso rodrigues的答案。 – KeLiuyue

+0

我也试过,但得到相同的错误 –

1

您可以获取上下文中的所有视图,因此你不需要传似参数的情况下,例如:

Context contex = holder.ivBackground.getContext(); 
+0

获取相同的错误Sir –

+0

看这个例子https://stackoverflow.com/a/40481103/5749462 –

相关问题