Я хочу создать собственную анимацию вставки в RecyclerView при добавлении элементов. Вот что у меня получилось:

private void init(View view, Context context) {
    recyclerView = view.findViewById(R.id.messagesList);
    layoutManager = new LinearLayoutManager(context);
    layoutManager.setStackFromEnd(true);
    recyclerView.setLayoutManager(layoutManager);

    recyclerView.setAdapter(adapter);
    recyclerView.setItemAnimator(new DefaultItemAnimator() {
        @Override
        public boolean animateAdd(RecyclerView.ViewHolder holder) {
            holder.itemView.setScaleY(0);
            holder.itemView.animate().scaleY(1).setDuration(3000).start();
            return super.animateAdd(holder);
        }
    });
}

private void onNewItem(Item item){
    adapter.onNewItem(item);
    layoutManager.smoothScrollToPosition(recyclerView, null, adapter.getItemCount());
}

Потом в переходнике

private void onNewItem(Item item){
    items.addItem(item);
    notifyItemInserted(items.size());
}

Элемент просто появляется, когда он добавлен, нет прокрутки или настраиваемой анимации.

0
Ilya Gazman 15 Окт 2020 в 19:17

1 ответ

Лучший ответ

Замена smoothScrollToPosition на scrollToPosition решила проблему.

Также у меня была ошибка вызова notifyItemInserted(items.size()); вместо notifyItemInserted(items.size() - 1);

0
Ilya Gazman 15 Окт 2020 в 18:24