ListView 中的过渡以替换所有元素

Transition in ListView to replace all elements

我有一个显示状态列表的 ListView。每当用户选择一个州时,我都会加载处于该州的城市列表。为此,我有一个管理器,无论何时选择一个项目,都会用该项目的子项替换我的自定义 BaseAdapter 读取的基础列表。

问题是,这工作正常,但项目只是当场替换,我真的想要一个很好的过渡,也就是说,状态列表向左移动并被替换来自另一边的城市列表

是否有 class 或方法可以帮助我制作动画?我想到的唯一选择是保留两个不同的 Listview 并使第一个淡出而另一个淡入。这不是最优雅的解决方案,我想知道是否可以只用一个 ListView

我不确定如何使用 ListView 执行此操作,但我知道您可以使用 RecyclerView 并在适配器的 onBindViewHolder 方法中添加动画。

当您调用 notifyDataSetChanged().

时,此方法会为每个可见项目调用一次

编辑:

像这样:

一些Class:

RecyclerView recyclerv;
MyAdapter mAdapter;
LinearLayoutManager mLayoutManager;
List<String> mDataset;

//instantiate recyclerview, adapter, layoutmanager, dataset. populate dataset.

recyclerv.setDataset(mDataset);

MyAdapter.java:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> dataset;
    public MyAdapter(){}

    //extend ViewHolder class here
    public class ViewHolder extends RecyclerView.Holder { ... }

    //implement onCreateViewHolder
    /*implement onBindViewHolder. 
     *animate your view here, but be sure to add an animation count
     else the items will keep getting animated everytime a new item appears */                              
   //implement getItemCount

    public void setDataset(List<String> dataset) {
        this.dataset = dataset;
        notifyDataSetChanged(); //this will trigger onBindViewHolder for every visible item
    }
}