1

J'ai créé un objet d'intention avec Bundle quand un CardView est cliqué et puis je démarre le Activity. Comment puis-je déclarer overridePendingTransition à l'intérieur? Code est donné belew:Comment déclarer overridePendingTransition dans onBindViewHolder d'un adaptateur RecyclerView?

@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); 
     } 
    }); 
} 

Répondre

1

Vous devez passer un Activity à votre RecyclerView.Adapter classe en déclarant qu'il aime:

Tout d'abord dans votre constructeur de l'adaptateur ajouter Activity champ:

public class MyAdapter extends RecyclerView.Adapter{ 

Activity mActivity; 
ArrayList<YourModel> models; 

public MyAdapter(ArrayList<YourModel> models,Activity mActivity){ 
    this.mActivity=mActivity; 
    this.models=models; 
} 
} 

Ensuite, ajoutez cette ligne dans votre Activity :

Activity thisActivity=(Activity)this;

Ensuite, dans votre Activity déclarer votre carte comme:

MyAdapter myAdapter=new MyAdapter(models,thisActivity); 

Et enfin, vous pouvez utiliser cette Activity dans votre adaptateur pour la transition comme:

mActivity.overridePendingTransition(); 
1

De Documentation

Appel immédiatement après l'une des saveurs de startActivity (intention) ou finish() pour spécifier une animation de transition explicite à effectuer suivant.

Vous devez l'appeler avec le contexte.

@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); 
     mContext.overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out); 
    } 
}); 
} 
+0

D'où puis-je obtenir mContext? –

+0

holder.itemView.getContext() – Eenvincible