Что я пытаюсь выполнить
Я хочу, чтобы элементы в линейном вертикальном RecyclerView отображались в порядке. Я хочу, чтобы появился первый пункт, затем второй, затем третий и так далее. Вот пример типа анимации, которую я пытаюсь выполнить.
Что я пробовал
Я пробовал методы, предоставленные в этом вопросе: Как оживить элементы RecyclerView, когда они появляются
Однако это не совсем то, что я пытаюсь выполнить. Это приводит к тому, что все элементы в RecyclerView появляются сразу, а не по одному.
Мой код
public class ParentCommentsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private int lastPosition = -1;
//constructor and other code not shown...
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
switch (viewHolder.getItemViewType()) {
case OP:
OPViewHolder ovh = (OPViewHolder) viewHolder;
configureOPViewHolder(ovh, position);
setAnimation(ovh.getContainer(), position);
break;
case COMMENT:
CommentViewHolder cvh = (CommentViewHolder) viewHolder;
configureCommentViewHolder(cvh, position);
setAnimation(cvh.getContainer(), position);
break;
default:
RecyclerViewSimpleTextViewHolder vh = (RecyclerViewSimpleTextViewHolder) viewHolder;
configureDefaultViewHolder(vh, position);
break;
}
}
@Override
public void onViewDetachedFromWindow(final RecyclerView.ViewHolder viewHolder)
{
switch (viewHolder.getItemViewType()) {
case OP:
((OPViewHolder)viewHolder).clearAnimation();
break;
case COMMENT:
((CommentViewHolder)viewHolder).clearAnimation();
break;
default:
break;
}
}
private void configureDefaultViewHolder(RecyclerViewSimpleTextViewHolder vh, int position) {
//code...
}
private void configureOPViewHolder(OPViewHolder vh1, int position) {
//code...
}
private void configureCommentViewHolder(CommentViewHolder vh2, int position) {
//code...
}
private void setAnimation(View viewToAnimate, int position)
{
// If the bound view wasn't previously displayed on screen, it animated
if (position > lastPosition)
{
Animation animation = AnimationUtils.loadAnimation(context, R.anim.fade_in);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
}