2017-01-10 75 views
0
類別

項目我已經創建了一個RecyclerViewGridManagerLayout回收站視圖安排由

爲了簡單起見,我的卡有2個維度,它們的ID和他們的稀有。我想要一個按鈕,它可以根據他們的ID或稀有程度排列網格。我應該如何去做這件事,這樣我就可以將卡片移動到新的位置?

我已經試過當按下按鈕,然後notifydDatasetChanged()創建一個新的ArrayList。這些物品切換位置很好,但沒有動畫,即卡牌只是重新填充,而不是「移動」 以達到新的位置效果。我想是這樣,因爲我正在定義一個新的ArrayList而不是改變當前列表。

我讀到另一個帖子裏面說,我應該爲了做到這一點使用Collections.swap。不知道這是我應該追求的。

有什麼建議嗎?

回答

0

我有一個可能的解決方案給你!

RecyclerView轉接器內這種方法。

public void addItemList(List<JobListApi.Job> newlyCreatedList) { 
    int lastPosition = this.mainItemList.size(); 
    this.mainItemList.addAll(newlyCreatedList); 
    this.notifyItemRangeInserted(lastPosition, newlyCreatedList.size()); 
} 

現在使用新創建的ArrayList調用此方法。

希望這對你有用。

+0

我還沒有嘗試過,但只是看着它,這是在前面的數組頂部?這不會重複我的原始列表中的項目? –

+0

@ImranHamid確實!但是在添加新列表之前,您可以清除原始的一個。我只是想解決你的動畫問題。 –

+0

感謝您的幫助!我意識到在使用'Collections.swap'時,使用'notifyItemMoved()'處理位置移動動畫。 –

0

我設法解決這個問題。如果有人需要的答案,請使用notifyItemMoved()其次notifyItemRangeChanged(position,getItemCount)