我有ListView
,显示状态列表。每当用户选择状态时,我将加载处于此状态的城市列表。为此,我有一位经理,无论何时选择一个项目,都会将我的自定义BaseAdapter
读取的基础列表替换为该项目的子项。
问题是,这个工作正常,但是这些项目只是当场更换,我真的想要一个很好的转换,即,向左移动并被列表替换的状态列表来自另一边的城市
是否有可以帮助我制作动画的课程或方法?我认为唯一的选择就是保留两个不同的Listview
并将第一个淡出而另一个淡入淡出。不是最优雅的解决方案,我想知道是否只能通过一个{{ 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
}
}