Как использовать ItemAnimator в RecyclerView?

Я хочу сделать анимацию, когда элемент добавлен или удален из адаптера recyclerview. Я пытаюсь использовать RecyclerView.ItemAnimator следующим образом, но он не работает.

public class MyAnimator extends RecyclerView.ItemAnimator{ @Override public boolean animateAdd(ViewHolder arg0) { Log.d("test","Added Animation"); return false; } @Override public boolean animateChange(ViewHolder arg0, ViewHolder arg1, int arg2, int arg3, int arg4, int arg5) { Log.d("test","Change Animation"); return false; } @Override public boolean animateMove(ViewHolder arg0, int arg1, int arg2, int arg3, int arg4) { // TODO Auto-generated method stub return false; } @Override public boolean animateRemove(ViewHolder arg0) { Log.d("test", "Remove Animation"); return false; } @Override public void endAnimation(ViewHolder arg0) { // TODO Auto-generated method stub } @Override public void endAnimations() { // TODO Auto-generated method stub } @Override public boolean isRunning() { // TODO Auto-generated method stub return false; } @Override public void runPendingAnimations() { // TODO Auto-generated method stub } } 

Я использую следующий код следующим образом.

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); data=new ArrayList<String>(); // use a linear layout manager mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); animator = new MyAnimator(); mRecyclerView.setItemAnimator(animator); mAdapter = new MyAdapter(data); mRecyclerView.setAdapter(mAdapter); } 

Всякий раз, когда я добавляю новый элемент в набор данных и вызываю mAdapter.notifyDataSetChanged() я ожидал, что Log присутствует в animateAdd(ViewHolder arg0) присутствующем в классе MyAnimator; Но это не придет. Я что-то пропустил. Почему он не работает.

Solutions Collecting From Web of "Как использовать ItemAnimator в RecyclerView?"

Прежде всего, для этого вам не нужен специальный ItemAnimator. Вы можете использовать по умолчанию один, удалить mRecyclerView.setItemAnimator(animator);

Кроме того, вы должны использовать notifyItemInserted() и notifyItemRemoved() вместо notifyDataSetChanged() , он вызывает соответствующую анимацию для вас.