2016-03-21 19 views
2

Şu anda bu tutorial'u izleyerek RecyclerView ve aktivitesindeki görünüm (kartlar) arasında paylaşılan bir öğe geçişi uygulamaktayım ancak yeni bir aktivite başlatmak için MyRecyclerAdapter sınıfında bir onClickListener kullanıyorum çünkü bunu nasıl yapabilirim? . Sadece yeni geliştirmede, umarım bana yardımcı olabilirsiniz.RecyclerView öğesinde onClickListener öğesine paylaşılan öğe geçişi nasıl uygulanır?

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 yöntemi:

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()); 

cevap

0

Sen onBindViewHolder içindeki görüş geçiş adını ayarlamak gerekir. Başkalarının viewHolder'dan farklı olması gerekir, bu yüzden farklı ve benzersiz hale getirmenin bir yolu olsun (palette adlarının benzersiz olması ya da i) kullanılması palette.getName() kullanılarak).

Sonra sağlanan görünümünü kullanarak tıklama içeride aktiviteyi başlamak gerekir:

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

Eğer animateIntent yöntemini neden ihtiyacın olduğunu anlamıyorum. Umarım hala

İlgili konular