1

Ich habe ein Intent-Objekt zusammen mit Bundle erstellt, wenn ein CardView geklickt wird und dann starte ich die Activity. Wie deklariere ich overridePendingTransition darin? Code ist belew gegeben:Wie kann overridePendingTransition in onBindViewHolder eines RecyclerView-Adapters deklariert werden?

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

Antwort

1

Sie müssen ein Activity auf Ihre RecyclerView.Adapter Klasse übergeben, wenn sie erklären mag:

allererst in Konstruktor Ihr Adapters Activity Feld hinzufügen:

public class MyAdapter extends RecyclerView.Adapter{ 

Activity mActivity; 
ArrayList<YourModel> models; 

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

Dann in Ihrem diese Zeile hinzufügen Activity :

Activity thisActivity=(Activity)this;

Dann in Ihrem Activity erklären Ihren Adapter wie:

MyAdapter myAdapter=new MyAdapter(models,thisActivity); 

Und schließlich können Sie diese Activity in Ihrem Adapter für den Übergang verwenden wie:

mActivity.overridePendingTransition(); 
1

Von Documentation

Anruf unmittelbar nach einem der Aromen von startActivity (Intent) oder finish() eine explizite Übergangsanimation spezifizieren neben zuführen.

Sie müssen es mit dem Kontext aufrufen.

@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

Von wo bekomme ich mContext? –

+0

halter.itemView.getContext() – Eenvincible