在ListView中转换以替换所有元素

时间:2015-11-13 19:10:09

标签: android android-listview android-transitions

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

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

是否有可以帮助我制作动画的课程或方法?我认为唯一的选择就是保留两个不同的Listview并将第一个淡出而另一个淡入淡出。不是最优雅的解决方案,我想知道是否只能通过一个{{ 1}}

1 个答案:

答案 0 :(得分:0)

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

当您致电notifyDataSetChanged()时,会为每个可见项目调用此方法一次。

编辑:

这样的事情:

某类:

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
    }
}