我试图用动画制作一个简单的例子RecyclerView,但默认动画不起作用.这是为什么?这里缺少什么?
主要活动:
public class MainActivity extends Activity { List<Song> songsList; RecyclerView recyclerView; MyAdapter myAdapter; RecyclerView.LayoutManager layoutManager; Song song1; Song song2; Song song3; Song song4; Song song5; Song song6; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); songsList = new ArrayList<>(); song1 = new Song(); song1.setName("Label1"); song1.setAuthor("Author1"); song1.setId(1); song2 = new Song(); song2.setName("Label2"); song2.setAuthor("Author2"); song2.setId(2); song3 = new Song(); song3.setName("Label3"); song3.setAuthor("Author3"); song3.setId(3); song4 = new Song(); song4.setName("Label4"); song4.setAuthor("Author4"); song4.setId(4); song5 = new Song(); song5.setName("Label5"); song5.setAuthor("Author5"); song5.setId(5); song6 = new Song(); song6.setName("Label6"); song6.setAuthor("Author6"); song6.setId(6); songsList.add(song1); songsList.add(song2); songsList.add(song3); recyclerView = (RecyclerView) findViewById(R.id.listView); recyclerView.setHasFixedSize(false); layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); myAdapter = new MyAdapter(songsList); recyclerView.setAdapter(myAdapter); RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator(); recyclerView.setItemAnimator(itemAnimator); } public void onClick(View view) { songsList.add(song4); myAdapter.addItem(song4); songsList.add(song5); myAdapter.addItem(song5); songsList.add(song6); myAdapter.addItem(song6); songsList.remove(song1); myAdapter.removeItem(1); songsList.remove(song2); myAdapter.removeItem(2); myAdapter.notifyDataSetChanged(); } }
适配器:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<Song> songList; public MyAdapter(List<Song> songList) { this.songList = songList; } @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup,int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false); return new ViewHolder(v); } @Override public void onBindViewHolder(ViewHolder viewHolder,int i) { Song song = songList.get(i); viewHolder.song.setText(song.getName()); viewHolder.author.setText(song.getAuthor()); } @Override public int getItemCount() { return songList.size(); } public void removeItem(int position) { songList.remove(position); notifyItemRemoved(position); } public void addItem(Song song) { songList.add(song); notifyItemInserted(songList.size()); } class ViewHolder extends RecyclerView.ViewHolder { private TextView song; private TextView author; public ViewHolder(View itemView) { super(itemView); song = (TextView) itemView.findViewById(R.id.tvSong); author = (TextView) itemView.findViewById(R.id.tvAuthor); } } }