2016-03-21 19 views
2

私はRecyclerViewとアクティビティのビュー(カード)の間で共有要素の移行を実装するためにこのtutorialに従っていますが、新しいアクティビティを開始するためにMyRecyclerAdapterクラスのonClickListenerを使用しているので、 。 ちょうど新しい開発で、あなたが私を助けてくれることを願っています。RecyclerViewのonClickListenerへの共有要素の移行を実装する方法は?

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方法:

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

答えて

0

あなたはonBindViewHolder内部ビューの遷移名を設定する必要があります。他のviewHolderとは異なる必要がありますので、パレット名が一意であるか、またはiを使用する場合は、palette.getName()を使用して、異なる固有の方法にしてください。あなたはanimateIntent方法を必要とする理由私は理解していない

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

次に、あなたが提供されるビューを使用してクリックで内部の活動を開始する必要があります。それでも助けてくれるといいですか

関連する問題