Java RecyclerView(ImageView)中的OnClickListener

Java RecyclerView(ImageView)中的OnClickListener,java,android,onclicklistener,recyclerview-layout,Java,Android,Onclicklistener,Recyclerview Layout,我正在努力做到这一点。在RecyclerView的CardView中,如果您点击该图像,则必须打开一个新的活动,其中包含更大版本的图像。就像点击Whatsapp的个人资料图片一样 所以a我想我会在图像上用一个OnClicklisterner来做这件事。 我在运行时收到此错误消息: 错误:不兼容的类型:无法转换为“活动” 如果能得到一些帮助,我将不胜感激。我对Android和Java还不熟悉,我有点被卡住了。 以下是我迄今为止尝试过的代码: @Override public vo

我正在努力做到这一点。在RecyclerView的CardView中,如果您点击该图像,则必须打开一个新的活动,其中包含更大版本的图像。就像点击Whatsapp的个人资料图片一样

所以a我想我会在图像上用一个OnClicklisterner来做这件事。
我在运行时收到此错误消息: 错误:不兼容的类型:无法转换为“活动” 如果能得到一些帮助,我将不胜感激。我对Android和Java还不熟悉,我有点被卡住了。 以下是我迄今为止尝试过的代码:

         @Override
public void onBindViewHolder(final MyViewTwoHolder holder, int position) {
    holder.tvBrand.setText((CharSequence) modelTwoArrayList.get(position).getBrand());
    holder.tvImage.setImageResource(Integer.parseInt(String.valueOf(modelTwoArrayList.get(position).getImage())));
    holder.tvImage.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, modelTwoArrayList.get(position).getImage());
        Intent i = new Intent(view.getContext(), DetailsActivity.class);
        view.getContext().startActivity(i, options.toBundle());

        }
    });
这行中的位置给了我一个问题:

     ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, modelTwoArrayList.get(position).getImage());
提前感谢您抽出时间

我现在的代码:

        @Override
public void onBindViewHolder(final MyViewTwoHolder holder, int position) {
    holder.tvBrand.setText((CharSequence) modelTwoArrayList.get(position).getBrand());
    holder.tvImage.setImageResource(Integer.parseInt(String.valueOf(modelTwoArrayList.get(position).getImage())));
    holder.tvImage.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation((Activity) ctx, holder.tvImage, "imageAnimation");
        Intent i = new Intent(ctx, DetailsActivity.class);
        i.putExtra("image_url", String.valueOf(holder.tvImage));
        ctx.startActivity(i, options.toBundle());

        }
    });
以及我的详细活动:

   public class DetailsActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.details_activity);
    getIncomingIntent();
}

private void getIncomingIntent(){
String imageUrl = getIntent().getStringExtra("imageAnimation");
    setImage(imageUrl);
    }

private void setImage(String imageUrl){
    ImageView image = findViewById(R.id.beer_logo);

}}
1) 确保您的第一个参数
是活动的参考

2) 确保第二个参数
modelTwoArrayList.get(position).getImage()
是列表的ImageView。看来情况并非如此。它必须是这样的
holder.tvImage

3) 提供第三个字符串参数“imageAnimation”

总之,您的代码将是这样的

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MyActivity.this, holder.tvImage, "imageAnimation");
Intent i = new Intent(MyActivity.this, DetailsActivity.class);
MyActivity.this.startActivity(i, options.toBundle());
1) 确保您的第一个参数
是活动的参考

2) 确保第二个参数
modelTwoArrayList.get(position).getImage()
是列表的ImageView。看来情况并非如此。它必须是这样的
holder.tvImage

3) 提供第三个字符串参数“imageAnimation”

总之,您的代码将是这样的

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MyActivity.this, holder.tvImage, "imageAnimation");
Intent i = new Intent(MyActivity.this, DetailsActivity.class);
MyActivity.this.startActivity(i, options.toBundle());

出现问题的原因是
ActivityOptions。MakeScenetTransitionAnimation
需要一个
活动
,但当您执行
此操作时,您将为其提供适配器

若要解决此问题,请更改适配器的构造函数以将该活动引入

MyAdapter(Context context,Arg1,Arg2){
  this.myActivityContext = context;
  ... other stuffs
}
然后在活动中初始化适配器时

MyAdapter myAdapter = new MyAdapter(this,arg1,arg2)
然后


出现问题的原因是
ActivityOptions。MakeScenetTransitionAnimation
需要一个
活动
,但当您执行
此操作时,您将为其提供适配器

若要解决此问题,请更改适配器的构造函数以将该活动引入

MyAdapter(Context context,Arg1,Arg2){
  this.myActivityContext = context;
  ... other stuffs
}
然后在活动中初始化适配器时

MyAdapter myAdapter = new MyAdapter(this,arg1,arg2)
然后


试试这个
ActivityOptions=ActivityOptions.makeSceneTransitionAnimation(view.getContext(),holder.tvImage,“yourSharedElementName”)试试这个
ActivityOptions=ActivityOptions.makeSceneTransitionAnimation(view.getContext(),holder.tvImage,“yourSharedElementName”)谢谢,我这样更改了代码,现在我的新活动打开了,但我似乎仍然无法在DetailsActivity中显示图像。我现在应该问一个新问题,但也许你可以看到一些东西。谢谢你,我改变了我的代码,现在我的新活动开始了,但我似乎仍然无法在DetailsActivity中显示图像。我现在应该问一个新问题,但也许你能看到一些东西。