如何在 RecyclerView 适配器的 onBindViewHolder 中声明 overridePendingTransition?

Swa*_*rma 4 android android-recyclerview overridependingtransition

我已经创建了一个意图对象以及单击Bundlea 的CardView时间,然后我启动了Activity. 我如何overridePendingTransition在里面声明?代码如下:

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
    holder.textView.setText(strings[position]);
    holder.cardView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(holder.itemView.getContext(),SecondActivity.class);
            Bundle bundle = new Bundle();
            bundle.putString("list",strings[position]);
            intent.putExtras(bundle);
            holder.itemView.getContext().startActivity(intent);
            //overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

Yas*_*maz 5

在声明它时,您必须将 an 传递Activity给您的RecyclerView.Adapter类:

首先在您的适配器的构造函数中添加Activity字段:

public class MyAdapter extends RecyclerView.Adapter{

Activity mActivity;
ArrayList<YourModel> models;

public MyAdapter(ArrayList<YourModel> models,Activity mActivity){
    this.mActivity=mActivity;
    this.models=models;
}
}
Run Code Online (Sandbox Code Playgroud)

然后在您的Activity

Activity thisActivity=(Activity)this;

然后在您Activity声明您的适配器,如:

MyAdapter myAdapter=new MyAdapter(models,thisActivity);
Run Code Online (Sandbox Code Playgroud)

最后,您可以Activity在适配器中使用它进行转换,例如:

mActivity.overridePendingTransition();
Run Code Online (Sandbox Code Playgroud)