package com.lgvalle.material_animations;
import android.app.Activity;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.util.Pair;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.lgvalle.material_animations.databinding.RowSampleBinding;
import java.util.List;
public class SamplesRecyclerAdapter extends RecyclerView.Adapter<SamplesRecyclerAdapter.SamplesViewHolder> {
private final Activity activity;
private final List<Sample> samples;
public SamplesRecyclerAdapter(Activity activity, List<Sample> samples) {
this.activity = activity;
this.samples = samples;
}
@Override
public SamplesViewHolder onCreateViewHolder(ViewGroup parent, int position) {
RowSampleBinding binding = RowSampleBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new SamplesViewHolder(binding.getRoot());
}
@Override
public void onBindViewHolder(final SamplesViewHolder viewHolder, final int position) {
final Sample sample = samples.get(viewHolder.getAdapterPosition());
viewHolder.binding.setSample(sample);
viewHolder.binding.sampleLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (viewHolder.getAdapterPosition()) {
case 0:
transitionToActivity(TransitionActivity1.class, sample);
break;
case 1:
transitionToActivity(SharedElementActivity.class, viewHolder, sample);
break;
case 2:
transitionToActivity(AnimationsActivity1.class, sample);
break;
case 3:
transitionToActivity(RevealActivity.class, viewHolder, sample, R.string.transition_reveal1);
break;
}
}
});
}
private void transitionToActivity(Class target, Sample sample) {
final Pair<View, String>[] pairs = TransitionHelper.createSafeTransitionParticipants(activity, true);
startActivity(target, pairs, sample);
}
private void transitionToActivity(Class target, SamplesViewHolder viewHolder, Sample sample, int transitionName) {
final Pair<View, String>[] pairs = TransitionHelper.createSafeTransitionParticipants(activity, false,
new Pair<>(viewHolder.binding.sampleIcon, activity.getString(transitionName)));
startActivity(target, pairs, sample);
}
private void transitionToActivity(Class target, SamplesViewHolder viewHolder, Sample sample) {
final Pair<View, String>[] pairs = TransitionHelper.createSafeTransitionParticipants(activity, false,
new Pair<>(viewHolder.binding.sampleIcon, activity.getString(R.string.square_blue_name)),
new Pair<>(viewHolder.binding.sampleName, activity.getString(R.string.sample_blue_title)));
startActivity(target, pairs, sample);
}
private void startActivity(Class target, Pair<View, String>[] pairs, Sample sample) {
Intent i = new Intent(activity, target);
ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, pairs);
i.putExtra("sample", sample);
activity.startActivity(i, transitionActivityOptions.toBundle());
}
@Override
public int getItemCount() {
return samples.size();
}
public class SamplesViewHolder extends RecyclerView.ViewHolder {
final RowSampleBinding binding;
public SamplesViewHolder(View rootView) {
super(rootView);
binding = DataBindingUtil.bind(rootView);
}
}
}