2016-03-21 11 views
2

Ich bin derzeit nach diesem tutorial zu implementieren einen gemeinsamen Element Übergang zwischen Ansicht (Karten) in RecyclerView und Aktivität, aber ich bin mir nicht sicher, wie kann ich es tun, da ich einen onClickListener auf MyRecyclerAdapter-Klasse verwenden, um eine neue Aktivität zu starten . Nur neu in der Entwicklung, hoffe, Sie können mir dabei helfen.Wie implementiert man den Übergang von gemeinsam genutzten Elementen zu onClickListener in RecyclerView?

MyRecyclerAdapter.java

public class MyRecyclerAdapter extends RecyclerView.Adapter<PaletteViewHolder> { 

private Context context; 
private List<Palette> palettes; 

public MyRecyclerAdapter(Context context, List<Palette> palettes) { 
    this.palettes = new ArrayList<Palette>(); 
    this.palettes.addAll(palettes); 
    this.context = context; 
} 

@Override 
public PaletteViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View itemView = LayoutInflater. 
      from(viewGroup.getContext()). 
      inflate(R.layout.card_view, viewGroup, false); 

    itemView.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(context, ScrollingActivity.class); 
      intent.putExtra("P25", "Longanissa"); 
      context.startActivity(intent); 


     } 
    }); 
    return new PaletteViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(PaletteViewHolder paletteViewHolder, int i) { 
    Palette palette = palettes.get(i); 
    paletteViewHolder.titleText.setText(palette.getName()); 
    paletteViewHolder.contentText.setText(palette.getHexValue()); 
    paletteViewHolder.card.setCardBackgroundColor(palette.getIntValue()); 
} 

@Override 
public int getItemCount() { 
    return palettes.size(); 
} 

animateIntent Methode:

public void animateIntent(View view) { 

// Ordinary Intent for launching a new activity 
Intent intent = new Intent(this, YourSecondActivity.class); 

// Get the transition name from the string 
String transitionName = getString(R.string.transition_string); 

// Define the view that the animation will start from 
View viewStart = findViewById(R.id.card_view); 

ActivityOptionsCompat options = 

ActivityOptionsCompat.makeSceneTransitionAnimation(this, 
       viewStart, // Starting view 
       transitionName // The String 
     ); 
//Start the Intent 
ActivityCompat.startActivity(this, intent, options.toBundle()); 

Antwort

0

Sie müssen innerhalb der onBindViewHolder den Übergang Namen der Ansicht einzustellen. Es muss anders sein als die anderen viewHolder, also einen Weg finden, es anders und einzigartig zu machen (mit palette.getName(), wenn Palettennamen zum Beispiel eindeutig sind oder i).

Dann müssen Sie die Aktivität im Inneren auf Klick starten Sie die mitgelieferte betrachten:

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(context, v, v.getTransitionName()); 
context.startActivity(intent, options.toBundle()); 

Ich verstehe nicht, warum Sie animateIntent Methode benötigen. Hoffe es hilft immer noch

Verwandte Themen