2015-11-13 37 views
0

我有一個ListView顯示狀態列表。無論何時用戶選擇一個州,我都會加載一個處於這種狀態的城市列表。爲此,我有一位經理,無論何時選擇一個項目,都會將我自定義的BaseAdapter讀取的基礎列表替換爲項目的子項目。ListView中的過渡替換所有元素

問題是,這工作正常,但項目只是現場替換,我真的想要一個很好的過渡,這是,狀態列表移動到左側,並被列表替換來自其他邊緣的城市

有沒有可以幫助我製作動畫的類或方法?我認爲唯一的選擇是保持兩個不同的Listview和褪色的第一個出來,而另一個在變淡。這不是最優雅的解決方案,我想知道,如果這能在某種程度上只有一個ListView

回答

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